pandora_transcribe/views.py

39 lines
1.2 KiB
Python
Raw Normal View History

2025-01-24 19:43:09 +05:30
# -*- coding: utf-8 -*-
2025-01-24 20:54:25 +05:30
from datetime import datetime
2025-01-24 19:43:09 +05:30
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
2025-01-24 20:54:25 +05:30
from taskqueue.models import Task
2025-01-24 19:43:09 +05:30
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
}
'''
2025-01-24 20:35:50 +05:30
response = json_response()
2025-01-24 19:43:09 +05:30
item = get_object_or_404_json(Item, public_id=data["item"])
2025-01-24 20:35:50 +05:30
if has_capability(request.user, 'canTranscribeAudio') and item.editable(request.user):
2025-01-24 20:54:25 +05:30
task, created = Task.objects.get_or_create(item=item)
task.user = request.user
task.status = 'transcribing'
task.save()
2025-01-24 19:43:09 +05:30
t = tasks.transcribe.delay(item=data["item"], user=request.user.username)
2025-01-24 20:35:50 +05:30
response["data"]["taskId"] = t.task_id
2025-01-24 19:43:09 +05:30
else:
response = json_response(status=403, text='permission denied')
return render_to_json_response(response)
actions.register(transcribeAudio, cache=False)