39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from datetime import datetime
|
|
|
|
from oxdjango.decorators import login_required_json
|
|
from oxdjango.shortcuts import render_to_json_response, get_object_or_404_json, json_response
|
|
|
|
from item.models import Item
|
|
from oxdjango.api import actions
|
|
from taskqueue.models import Task
|
|
from user.models import has_capability
|
|
|
|
from . import tasks
|
|
|
|
|
|
@login_required_json
|
|
def transcribeAudio(request, data):
|
|
'''
|
|
Transcribe audio and add to subtitles layer
|
|
takes {
|
|
item: string // item id
|
|
}
|
|
returns {
|
|
item: id // item id
|
|
}
|
|
'''
|
|
response = json_response()
|
|
item = get_object_or_404_json(Item, public_id=data["item"])
|
|
if has_capability(request.user, 'canTranscribeAudio') and item.editable(request.user):
|
|
task, created = Task.objects.get_or_create(item=item)
|
|
task.user = request.user
|
|
task.status = 'transcribing'
|
|
task.save()
|
|
t = tasks.transcribe.delay(item=data["item"], user=request.user.username)
|
|
response["data"]["taskId"] = t.task_id
|
|
else:
|
|
response = json_response(status=403, text='permission denied')
|
|
return render_to_json_response(response)
|
|
actions.register(transcribeAudio, cache=False)
|