diff --git a/tdrs-backend/tdpservice/data_files/admin/admin.py b/tdrs-backend/tdpservice/data_files/admin/admin.py index f17e0d6f11..a534e63a21 100644 --- a/tdrs-backend/tdpservice/data_files/admin/admin.py +++ b/tdrs-backend/tdpservice/data_files/admin/admin.py @@ -8,9 +8,9 @@ from django.utils.html import format_html from datetime import datetime, timedelta, timezone from django.shortcuts import redirect -from django.core.management import call_command from django.utils.translation import ngettext from django.contrib import messages +from tdpservice.data_files.tasks import reparse_files DOMAIN = settings.FRONTEND_BASE_URL @@ -40,8 +40,8 @@ class Media: def reparse(self, request, queryset): """Reparse the selected data files.""" files = queryset.values_list("id", flat=True) - file_ids = ",".join(map(str, files)) - call_command("clean_and_reparse", f"-f {file_ids}") + reparse_files.delay(list(files)) + self.message_user( request, ngettext( @@ -57,9 +57,12 @@ def reparse(self, request, queryset): def get_actions(self, request): """Return the actions.""" actions = super().get_actions(request) + print('get actions') if not request.user.groups.filter(name__in=["OFA System Admin", "OFA Admin"]).exists(): + print('not allowed') actions.pop("reparse", None) else: + print('allowed') if "reparse" not in actions: actions["reparse"] = (self.reparse, "reparse", "Reparse selected data files)") return actions diff --git a/tdrs-backend/tdpservice/data_files/tasks.py b/tdrs-backend/tdpservice/data_files/tasks.py index 16e35de792..58e136a111 100644 --- a/tdrs-backend/tdpservice/data_files/tasks.py +++ b/tdrs-backend/tdpservice/data_files/tasks.py @@ -4,6 +4,7 @@ from datetime import timedelta from django.utils import timezone from django.contrib.auth.models import Group +from django.core.management import call_command from django.db.models import Q, Count from tdpservice.users.models import AccountApprovalStatusChoices, User from tdpservice.data_files.models import DataFile @@ -46,3 +47,9 @@ def notify_stuck_files(): ).values_list('username', flat=True).distinct() send_stuck_file_email(stuck_files, recipients) + + +@shared_task +def reparse_files(file_ids): + file_ids_str = ",".join(map(str, file_ids)) + call_command("clean_and_reparse", f"-f {file_ids_str}")