Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added filter to reports #869

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions backend/transcript/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
authentication_classes,
permission_classes,
)
from django.utils import timezone
from datetime import timedelta
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet
from video.models import Video
Expand Down Expand Up @@ -2151,9 +2153,25 @@ def get_transcript_types(request):
@authentication_classes([])
@permission_classes([])
def get_transcription_report(request):
transcripts = Transcript.objects.filter(
status="TRANSCRIPTION_EDIT_COMPLETE"
).values("language", "video__project_id__organization_id__title")
start_date_str = request.query_params.get("start_date")
end_date_str = request.query_params.get("end_date")

transcripts = Transcript.objects.filter(status="TRANSCRIPTION_EDIT_COMPLETE")

def parse_date(date_str):
year, month, day = map(int, date_str.split("-"))
return timezone.make_aware(datetime.datetime(year, month, day, 0, 0, 0))

if start_date_str and end_date_str:
start_date = parse_date(start_date_str)
end_date = parse_date(end_date_str) + timedelta(days=1)
transcripts = transcripts.filter(
updated_at__date__range=(start_date.date(), end_date.date())
)

transcripts = transcripts.values(
"language", "video__project_id__organization_id__title"
)
transcription_statistics = transcripts.annotate(
total_duration=Sum(F("video__duration"))
).order_by("-total_duration")
Expand Down
23 changes: 20 additions & 3 deletions backend/translation/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
permission_classes,
authentication_classes,
)
from django.utils import timezone
from datetime import timedelta
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from transcript.utils.TTML import generate_ttml
Expand Down Expand Up @@ -2144,13 +2146,28 @@ def get_translation_types(request):
@authentication_classes([])
@permission_classes([])
def get_translation_report(request):
translations = Translation.objects.filter(
status="TRANSLATION_EDIT_COMPLETE"
).values(
start_date_str = request.query_params.get("start_date")
end_date_str = request.query_params.get("end_date")

translations = Translation.objects.filter(status="TRANSLATION_EDIT_COMPLETE")

def parse_date(date_str):
year, month, day = map(int, date_str.split("-"))
return timezone.make_aware(datetime.datetime(year, month, day, 0, 0, 0))

if start_date_str and end_date_str:
start_date = parse_date(start_date_str)
end_date = parse_date(end_date_str) + timedelta(days=1)
translations = translations.filter(
updated_at__date__range=(start_date.date(), end_date.date())
)

translations = translations.values(
"video__project_id__organization_id__title",
src_language=F("video__language"),
tgt_language=F("target_language"),
)

translation_statistics = (
translations.annotate(transcripts_translated=Count("id"))
.annotate(translation_duration=Sum(F("video__duration")))
Expand Down
88 changes: 85 additions & 3 deletions backend/voiceover/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
permission_classes,
authentication_classes,
)
from django.utils import timezone
from rest_framework.response import Response
from task.models import Task, TRANSLATION_VOICEOVER_EDIT
from translation.utils import get_batch_translations_using_indictrans_nmt_api
Expand Down Expand Up @@ -707,7 +708,10 @@ def get_translated_text(request):
tmx_level,
)

(tgt, tmx_replacement,) = tmxservice.replace_nmt_tgt_with_user_tgt(
(
tgt,
tmx_replacement,
) = tmxservice.replace_nmt_tgt_with_user_tgt(
tmx_phrases,
text,
translated_text[0],
Expand Down Expand Up @@ -819,6 +823,68 @@ def save_voice_over(request):
target_language = voice_over.target_language
translation = voice_over.translation

if (
task.task_type == TRANSLATION_VOICEOVER_EDIT
and request.data.get("final")
and Translation.objects.filter(
task=task, status=TRANSLATION_EDIT_COMPLETE
).first()
== None
):
inprogress_translation = Translation.objects.filter(
task=task, status=TRANSLATION_EDIT_INPROGRESS
).first()
complete_translation = copy.deepcopy(translation)
complete_translation.translation_uuid = uuid.uuid4()
complete_translation.status = TRANSLATION_EDIT_COMPLETE
complete_translation.id = None # Reset the ID to create a new instance
complete_translation.parent = inprogress_translation
complete_translation.save()
if (
complete_translation.payload != ""
and complete_translation.payload is not None
):
num_words = 0
for idv_translation in complete_translation.payload["payload"]:
if "target_text" in idv_translation.keys():
cleaned_text = regex.sub(
r"[^\p{L}\s]", "", idv_translation["target_text"]
).lower() # for removing special characters
cleaned_text = regex.sub(
r"\s+", " ", cleaned_text
) # for removing multiple blank spaces
num_words += len(cleaned_text.split(" "))
complete_translation.payload["word_count"] = num_words
complete_translation.save()
voice_over.translation = complete_translation
voice_over.save()
else:
complete_translation.payload = {"payload": [], "word_count": 0}
complete_translation.save()
voice_over.translation = complete_translation
voice_over.save()
translation = complete_translation
print("Saved Complete Translation with inprogress", inprogress_translation)
else:
inprogress_translation = Translation.objects.filter(
task=task, status=TRANSLATION_EDIT_INPROGRESS
).first()
if (
task.task_type == TRANSLATION_VOICEOVER_EDIT
and inprogress_translation == None
):
inprogress_translation = copy.deepcopy(translation)
inprogress_translation.translation_uuid = uuid.uuid4()
inprogress_translation.status = TRANSLATION_EDIT_INPROGRESS
inprogress_translation.id = (
None # Reset the ID to create a new instance
)
inprogress_translation.parent = translation
inprogress_translation.save()
voice_over.translation = inprogress_translation
voice_over.save()
print("Saved IP Translation with inprogress")
translation = inprogress_translation
# Check if the transcript has a user
if task.user != request.user:
return Response(
Expand Down Expand Up @@ -1845,7 +1911,23 @@ def get_voice_over_task_counts(request):

@api_view(["GET"])
def get_voiceover_report(request):
voiceovers = VoiceOver.objects.filter(status="VOICEOVER_EDIT_COMPLETE").values(
start_date_str = request.query_params.get("start_date")
end_date_str = request.query_params.get("end_date")

voiceovers = VoiceOver.objects.filter(status="VOICEOVER_EDIT_COMPLETE")

def parse_date(date_str):
year, month, day = map(int, date_str.split("-"))
return timezone.make_aware(datetime(year, month, day, 0, 0, 0))

if start_date_str and end_date_str:
start_date = parse_date(start_date_str)
end_date = parse_date(end_date_str) + timedelta(days=1)
voiceovers = voiceovers.filter(
updated_at__date__range=(start_date.date(), end_date.date())
)

voiceovers = voiceovers.values(
"video__project_id__organization_id__title",
src_language=F("video__language"),
tgt_language=F("target_language"),
Expand Down Expand Up @@ -1905,7 +1987,7 @@ def get_voiceover_report(request):
)
@api_view(["POST"])
def reopen_translation_voiceover_task(request):
task_id = request.query_params.get("task_id")
task_id = request.data["task_id"]

try:
task = Task.objects.get(pk=task_id)
Expand Down
Loading