mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Use pre_execute signal to specify started vs queued
This commit is contained in:
		| @@ -39,7 +39,7 @@ | |||||||
|         </th> |         </th> | ||||||
|         <th scope="col" i18n>Name</th> |         <th scope="col" i18n>Name</th> | ||||||
|         <th scope="col" class="d-none d-lg-table-cell" i18n>Created</th> |         <th scope="col" class="d-none d-lg-table-cell" i18n>Created</th> | ||||||
|         <th scope="col" class="d-none d-lg-table-cell" *ngIf="activeTab != 'incomplete'" i18n>Results</th> |         <th scope="col" class="d-none d-lg-table-cell" *ngIf="activeTab != 'started' && activeTab != 'queued'" i18n>Results</th> | ||||||
|         <th scope="col" class="d-table-cell d-lg-none" i18n>Info</th> |         <th scope="col" class="d-table-cell d-lg-none" i18n>Info</th> | ||||||
|         <th scope="col" i18n>Actions</th> |         <th scope="col" i18n>Actions</th> | ||||||
|       </tr> |       </tr> | ||||||
| @@ -104,10 +104,16 @@ | |||||||
|       <ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:tasksService.completedFileTasks}"></ng-container> |       <ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:tasksService.completedFileTasks}"></ng-container> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|   </li> |   </li> | ||||||
|   <li ngbNavItem="incomplete"> |   <li ngbNavItem="started"> | ||||||
|     <a ngbNavLink i18n>Incomplete <span *ngIf="tasksService.incompleteFileTasks.length > 0" class="badge bg-secondary ms-1">{{tasksService.incompleteFileTasks.length}}</span></a> |     <a ngbNavLink i18n>Started <span *ngIf="tasksService.startedFileTasks.length > 0" class="badge bg-secondary ms-1">{{tasksService.startedFileTasks.length}}</span></a> | ||||||
|     <ng-template ngbNavContent> |     <ng-template ngbNavContent> | ||||||
|       <ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:tasksService.incompleteFileTasks}"></ng-container> |       <ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:tasksService.startedFileTasks}"></ng-container> | ||||||
|  |     </ng-template> | ||||||
|  |   </li> | ||||||
|  |   <li ngbNavItem="queued"> | ||||||
|  |     <a ngbNavLink i18n>Queued <span *ngIf="tasksService.queuedFileTasks.length > 0" class="badge bg-secondary ms-1">{{tasksService.queuedFileTasks.length}}</span></a> | ||||||
|  |     <ng-template ngbNavContent> | ||||||
|  |       <ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:tasksService.queuedFileTasks}"></ng-container> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|   </li> |   </li> | ||||||
| </ul> | </ul> | ||||||
|   | |||||||
| @@ -77,8 +77,11 @@ export class TasksComponent implements OnInit, OnDestroy { | |||||||
|   get currentTasks(): PaperlessTask[] { |   get currentTasks(): PaperlessTask[] { | ||||||
|     let tasks: PaperlessTask[] |     let tasks: PaperlessTask[] | ||||||
|     switch (this.activeTab) { |     switch (this.activeTab) { | ||||||
|       case 'incomplete': |       case 'queued': | ||||||
|         tasks = this.tasksService.incompleteFileTasks |         tasks = this.tasksService.queuedFileTasks | ||||||
|  |         break | ||||||
|  |       case 'started': | ||||||
|  |         tasks = this.tasksService.startedFileTasks | ||||||
|         break |         break | ||||||
|       case 'completed': |       case 'completed': | ||||||
|         tasks = this.tasksService.completedFileTasks |         tasks = this.tasksService.completedFileTasks | ||||||
|   | |||||||
| @@ -6,7 +6,8 @@ export enum PaperlessTaskType { | |||||||
| } | } | ||||||
|  |  | ||||||
| export enum PaperlessTaskStatus { | export enum PaperlessTaskStatus { | ||||||
|   Incomplete = 'incomplete', |   Queued = 'queued', | ||||||
|  |   Started = 'started', | ||||||
|   Complete = 'complete', |   Complete = 'complete', | ||||||
|   Failed = 'failed', |   Failed = 'failed', | ||||||
|   Unknown = 'unknown', |   Unknown = 'unknown', | ||||||
| @@ -25,5 +26,7 @@ export interface PaperlessTask extends ObjectWithId { | |||||||
|  |  | ||||||
|   created: Date |   created: Date | ||||||
|  |  | ||||||
|  |   started?: Date | ||||||
|  |  | ||||||
|   result: string |   result: string | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,10 +26,12 @@ export class TasksService { | |||||||
|     return this.fileTasks.slice(0) |     return this.fileTasks.slice(0) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public get incompleteFileTasks(): PaperlessTask[] { |   public get queuedFileTasks(): PaperlessTask[] { | ||||||
|     return this.fileTasks.filter( |     return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Queued) | ||||||
|       (t) => t.status == PaperlessTaskStatus.Incomplete |   } | ||||||
|     ) |  | ||||||
|  |   public get startedFileTasks(): PaperlessTask[] { | ||||||
|  |     return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Started) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public get completedFileTasks(): PaperlessTask[] { |   public get completedFileTasks(): PaperlessTask[] { | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ def init_paperless_tasks(apps, schema_editor): | |||||||
|                 task_id=task.id, |                 task_id=task.id, | ||||||
|                 name=task.name, |                 name=task.name, | ||||||
|                 created=task.started, |                 created=task.started, | ||||||
|  |                 started=task.started, | ||||||
|                 acknowledged=True, |                 acknowledged=True, | ||||||
|             ) |             ) | ||||||
|             task.paperlesstask = paperlesstask |             task.paperlesstask = paperlesstask | ||||||
| @@ -45,9 +46,11 @@ class Migration(migrations.Migration): | |||||||
|                 ("name", models.CharField(max_length=256)), |                 ("name", models.CharField(max_length=256)), | ||||||
|                 ( |                 ( | ||||||
|                     "created", |                     "created", | ||||||
|                     models.DateTimeField( |                     models.DateTimeField(auto_now=True, verbose_name="created"), | ||||||
|                         auto_now=True, db_index=True, verbose_name="created" |                 ), | ||||||
|                     ), |                 ( | ||||||
|  |                     "started", | ||||||
|  |                     models.DateTimeField(verbose_name="started"), | ||||||
|                 ), |                 ), | ||||||
|                 ("acknowledged", models.BooleanField(default=False)), |                 ("acknowledged", models.BooleanField(default=False)), | ||||||
|                 ( |                 ( | ||||||
|   | |||||||
| @@ -507,7 +507,8 @@ class PaperlessTask(models.Model): | |||||||
|  |  | ||||||
|     task_id = models.CharField(max_length=128) |     task_id = models.CharField(max_length=128) | ||||||
|     name = models.CharField(max_length=256) |     name = models.CharField(max_length=256) | ||||||
|     created = models.DateTimeField(_("created"), auto_now=True, db_index=True) |     created = models.DateTimeField(_("created"), auto_now=True) | ||||||
|  |     started = models.DateTimeField(_("started")) | ||||||
|     attempted_task = models.OneToOneField( |     attempted_task = models.OneToOneField( | ||||||
|         Task, |         Task, | ||||||
|         on_delete=models.CASCADE, |         on_delete=models.CASCADE, | ||||||
|   | |||||||
| @@ -622,7 +622,10 @@ class TasksViewSerializer(serializers.ModelSerializer): | |||||||
|  |  | ||||||
|     def get_status(self, obj): |     def get_status(self, obj): | ||||||
|         if obj.attempted_task is None: |         if obj.attempted_task is None: | ||||||
|             return "incomplete" |             if obj.started: | ||||||
|  |                 return "started" | ||||||
|  |             else: | ||||||
|  |                 return "queued" | ||||||
|         elif obj.attempted_task.success: |         elif obj.attempted_task.success: | ||||||
|             return "complete" |             return "complete" | ||||||
|         elif not obj.attempted_task.success: |         elif not obj.attempted_task.success: | ||||||
|   | |||||||
| @@ -514,12 +514,24 @@ def init_paperless_task(sender, task, **kwargs): | |||||||
|         paperless_task.save() |         paperless_task.save() | ||||||
|  |  | ||||||
|  |  | ||||||
| @receiver(models.signals.post_save, sender=django_q.tasks.Task) | @receiver(django_q.signals.pre_execute) | ||||||
| def update_paperless_task(sender, instance, **kwargs): | def paperless_task_started(sender, task, **kwargs): | ||||||
|  |     print(task) | ||||||
|     try: |     try: | ||||||
|         if instance.func == "documents.tasks.consume_file": |         if task["func"] == "documents.tasks.consume_file": | ||||||
|             paperless_task = PaperlessTask.objects.get(task_id=instance.id) |             paperless_task = PaperlessTask.objects.get(task_id=task["id"]) | ||||||
|             paperless_task.attempted_task = instance |             paperless_task.started = timezone.now() | ||||||
|  |             paperless_task.save() | ||||||
|  |     except PaperlessTask.DoesNotExist: | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @receiver(models.signals.post_save, sender=django_q.tasks.Task) | ||||||
|  | def update_paperless_task(sender, task, **kwargs): | ||||||
|  |     try: | ||||||
|  |         if task.func == "documents.tasks.consume_file": | ||||||
|  |             paperless_task = PaperlessTask.objects.get(task_id=task.id) | ||||||
|  |             paperless_task.attempted_task = task | ||||||
|             paperless_task.save() |             paperless_task.save() | ||||||
|     except PaperlessTask.DoesNotExist: |     except PaperlessTask.DoesNotExist: | ||||||
|         pass |         pass | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Shamoon
					Michael Shamoon