From fad1b03458125e2a65886f4107c2bea5b2d99721 Mon Sep 17 00:00:00 2001 From: Trenton H Date: Tue, 27 Sep 2022 12:44:01 -0700 Subject: [PATCH] Finalizes what the PaperlessTask will look like to the frontend --- ...drop_django_q.py => 1026_drop_django_q.py} | 2 +- ..._remove_paperlesstask_created_and_more.py} | 8 ++----- src/documents/models.py | 1 + src/documents/serialisers.py | 22 +++++++++---------- src/documents/signals/handlers.py | 3 +++ src/documents/tests/test_api.py | 10 ++------- src/paperless/settings.py | 9 ++++++-- 7 files changed, 27 insertions(+), 28 deletions(-) rename src/documents/migrations/{1027_drop_django_q.py => 1026_drop_django_q.py} (90%) rename src/documents/migrations/{1026_remove_paperlesstask_created_and_more.py => 1027_remove_paperlesstask_created_and_more.py} (80%) diff --git a/src/documents/migrations/1027_drop_django_q.py b/src/documents/migrations/1026_drop_django_q.py similarity index 90% rename from src/documents/migrations/1027_drop_django_q.py rename to src/documents/migrations/1026_drop_django_q.py index 878563cc6..f1f58d45e 100644 --- a/src/documents/migrations/1027_drop_django_q.py +++ b/src/documents/migrations/1026_drop_django_q.py @@ -6,7 +6,7 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ("documents", "1026_remove_paperlesstask_created_and_more"), + ("documents", "1025_alter_savedviewfilterrule_rule_type"), ] # Manual SQL commands to drop the django_q related tables diff --git a/src/documents/migrations/1026_remove_paperlesstask_created_and_more.py b/src/documents/migrations/1027_remove_paperlesstask_created_and_more.py similarity index 80% rename from src/documents/migrations/1026_remove_paperlesstask_created_and_more.py rename to src/documents/migrations/1027_remove_paperlesstask_created_and_more.py index dfd07e0b5..fa7f01b93 100644 --- a/src/documents/migrations/1026_remove_paperlesstask_created_and_more.py +++ b/src/documents/migrations/1027_remove_paperlesstask_created_and_more.py @@ -1,4 +1,4 @@ -# Generated by Django 4.0.7 on 2022-09-02 22:08 +# Generated by Django 4.1.1 on 2022-09-27 19:31 from django.db import migrations, models import django.db.models.deletion @@ -8,7 +8,7 @@ class Migration(migrations.Migration): dependencies = [ ("django_celery_results", "0011_taskresult_periodic_task_name"), - ("documents", "1025_alter_savedviewfilterrule_rule_type"), + ("documents", "1026_drop_django_q"), ] operations = [ @@ -24,10 +24,6 @@ class Migration(migrations.Migration): model_name="paperlesstask", name="started", ), - migrations.RemoveField( - model_name="paperlesstask", - name="task_id", - ), migrations.AlterField( model_name="paperlesstask", name="attempted_task", diff --git a/src/documents/models.py b/src/documents/models.py index fef17f0d8..5a84c467b 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -527,6 +527,7 @@ class UiSettings(models.Model): class PaperlessTask(models.Model): + task_id = models.CharField(max_length=128) acknowledged = models.BooleanField(default=False) attempted_task = models.OneToOneField( diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index b6b170809..ddba3fc6b 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -622,14 +622,14 @@ class TasksViewSerializer(serializers.ModelSerializer): depth = 1 fields = ( "id", + "task_id", + "date_created", + "date_done", "type", "status", "result", "acknowledged", - "date_created", - "date_done", "task_name", - "task_id", ) type = serializers.SerializerMethodField() @@ -670,14 +670,6 @@ class TasksViewSerializer(serializers.ModelSerializer): result = obj.attempted_task.date_done return result - task_name = serializers.SerializerMethodField() - - def get_task_name(self, obj): - result = "" - if hasattr(obj, "attempted_task") and obj.attempted_task: - result = obj.attempted_task.task_name - return result - task_id = serializers.SerializerMethodField() def get_task_id(self, obj): @@ -686,6 +678,14 @@ class TasksViewSerializer(serializers.ModelSerializer): result = obj.attempted_task.task_id return result + task_name = serializers.SerializerMethodField() + + def get_task_name(self, obj): + result = "" + if hasattr(obj, "attempted_task") and obj.attempted_task: + result = obj.attempted_task.task_name + return result + class AcknowledgeTasksViewSerializer(serializers.Serializer): diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index 4c990a801..76ae974c6 100644 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -509,6 +509,9 @@ def update_paperless_task(sender, instance: TaskResult, **kwargs): paperless_task, _ = PaperlessTask.objects.get_or_create( task_id=instance.task_id, ) + paperless_task.name = instance.task_name + paperless_task.created = instance.date_created + paperless_task.completed = instance.date_done paperless_task.attempted_task = instance paperless_task.save() except Exception as e: diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 08ef15374..89e340501 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -22,7 +22,6 @@ from django.conf import settings from django.contrib.auth.models import User from django.test import override_settings from django.utils import timezone -from django_q.models import Task from documents import bulk_edit from documents import index from documents.models import Correspondent @@ -33,7 +32,6 @@ from documents.models import PaperlessTask from documents.models import SavedView from documents.models import StoragePath from documents.models import Tag -from documents.models import UiSettings from django_celery_results.models import TaskResult from documents.models import Comment from documents.models import StoragePath @@ -2805,23 +2803,19 @@ class TestTasks(APITestCase): """ result1 = TaskResult.objects.create( task_id=str(uuid.uuid4()), - task_name="documents.tasks.some_task", + task_name="documents.tasks.some_great_task", status=celery.states.PENDING, ) PaperlessTask.objects.create(attempted_task=result1) result2 = TaskResult.objects.create( task_id=str(uuid.uuid4()), - task_name="documents.tasks.other_task", + task_name="documents.tasks.some_awesome_task", status=celery.states.STARTED, ) PaperlessTask.objects.create(attempted_task=result2) response = self.client.get(self.ENDPOINT) - from pprint import pprint - - for x in response.data: - pprint(x) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 2) diff --git a/src/paperless/settings.py b/src/paperless/settings.py index 01e80a55b..9b5efc6b7 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -463,13 +463,18 @@ WORKER_TIMEOUT: Final[int] = __get_int("PAPERLESS_WORKER_TIMEOUT", 1800) CELERY_BROKER_URL = _REDIS_URL CELERY_TIMEZONE = TIME_ZONE + CELERY_WORKER_HIJACK_ROOT_LOGGER = False CELERY_WORKER_CONCURRENCY = TASK_WORKERS CELERY_WORKER_MAX_TASKS_PER_CHILD = 1 -CELERY_TASK_TRACK_STARTED = True -CELERY_RESULT_EXTENDED = True +CELERY_WORKER_SEND_TASK_EVENTS = True + CELERY_SEND_TASK_SENT_EVENT = True + +CELERY_TASK_TRACK_STARTED = True CELERY_TASK_TIME_LIMIT = WORKER_TIMEOUT + +CELERY_RESULT_EXTENDED = True CELERY_RESULT_BACKEND = "django-db" CELERY_CACHE_BACKEND = "default"