pandora_transcribe/views.py
2025-01-24 20:54:25 +05:30

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)