mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Merge pull request #1648 from paperless-ngx/feature-use-celery
Feature: Transition to celery for background tasks
This commit is contained in:
		@@ -54,7 +54,7 @@
 | 
			
		||||
          </div>
 | 
			
		||||
        </th>
 | 
			
		||||
        <td class="overflow-auto">{{ task.name }}</td>
 | 
			
		||||
        <td class="d-none d-lg-table-cell">{{ task.created | customDate:'short' }}</td>
 | 
			
		||||
        <td class="d-none d-lg-table-cell">{{ task.date_created | customDate:'short' }}</td>
 | 
			
		||||
        <td class="d-none d-lg-table-cell" *ngIf="activeTab != 'started' && activeTab != 'queued'">
 | 
			
		||||
          <div *ngIf="task.result.length > 50" class="result" (click)="expandTask(task); $event.stopPropagation();"
 | 
			
		||||
            [ngbPopover]="resultPopover" popoverClass="shadow small mobile" triggers="mouseenter:mouseleave" container="body">
 | 
			
		||||
@@ -74,11 +74,18 @@
 | 
			
		||||
          </button>
 | 
			
		||||
        </td>
 | 
			
		||||
        <td scope="row">
 | 
			
		||||
          <button class="btn btn-sm btn-outline-secondary" (click)="dismissTask(task); $event.stopPropagation();">
 | 
			
		||||
            <svg class="sidebaricon" fill="currentColor">
 | 
			
		||||
              <use xlink:href="assets/bootstrap-icons.svg#check"/>
 | 
			
		||||
            </svg> <ng-container i18n>Dismiss</ng-container>
 | 
			
		||||
          </button>
 | 
			
		||||
          <div class="btn-group" role="group">
 | 
			
		||||
            <button class="btn btn-sm btn-outline-secondary" (click)="dismissTask(task); $event.stopPropagation();">
 | 
			
		||||
              <svg class="sidebaricon" fill="currentColor">
 | 
			
		||||
                <use xlink:href="assets/bootstrap-icons.svg#check"/>
 | 
			
		||||
              </svg> <ng-container i18n>Dismiss</ng-container>
 | 
			
		||||
            </button>
 | 
			
		||||
            <button *ngIf="task.related_document" class="btn btn-sm btn-outline-primary" (click)="dismissAndGo(task); $event.stopPropagation();">
 | 
			
		||||
              <svg class="sidebaricon" fill="currentColor">
 | 
			
		||||
                <use xlink:href="assets/bootstrap-icons.svg#file-text"/>
 | 
			
		||||
              </svg> <ng-container i18n>Open Document</ng-container>
 | 
			
		||||
            </button>
 | 
			
		||||
          </div>
 | 
			
		||||
        </td>
 | 
			
		||||
      </tr>
 | 
			
		||||
      <tr>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
import { Component, OnInit, OnDestroy } from '@angular/core'
 | 
			
		||||
import { Router } from '@angular/router'
 | 
			
		||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
 | 
			
		||||
import { takeUntil, Subject, first } from 'rxjs'
 | 
			
		||||
import { Subject, first } from 'rxjs'
 | 
			
		||||
import { PaperlessTask } from 'src/app/data/paperless-task'
 | 
			
		||||
import { TasksService } from 'src/app/services/tasks.service'
 | 
			
		||||
import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component'
 | 
			
		||||
@@ -24,7 +25,8 @@ export class TasksComponent implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    public tasksService: TasksService,
 | 
			
		||||
    private modalService: NgbModal
 | 
			
		||||
    private modalService: NgbModal,
 | 
			
		||||
    private readonly router: Router
 | 
			
		||||
  ) {}
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
@@ -64,6 +66,11 @@ export class TasksComponent implements OnInit, OnDestroy {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  dismissAndGo(task: PaperlessTask) {
 | 
			
		||||
    this.dismissTask(task)
 | 
			
		||||
    this.router.navigate(['documents', task.related_document])
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  expandTask(task: PaperlessTask) {
 | 
			
		||||
    this.expandedTask = this.expandedTask == task.id ? undefined : task.id
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,10 @@ export enum PaperlessTaskType {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export enum PaperlessTaskStatus {
 | 
			
		||||
  Queued = 'queued',
 | 
			
		||||
  Started = 'started',
 | 
			
		||||
  Complete = 'complete',
 | 
			
		||||
  Failed = 'failed',
 | 
			
		||||
  Unknown = 'unknown',
 | 
			
		||||
  Pending = 'PENDING',
 | 
			
		||||
  Started = 'STARTED',
 | 
			
		||||
  Complete = 'SUCCESS',
 | 
			
		||||
  Failed = 'FAILURE',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface PaperlessTask extends ObjectWithId {
 | 
			
		||||
@@ -24,9 +23,11 @@ export interface PaperlessTask extends ObjectWithId {
 | 
			
		||||
 | 
			
		||||
  name: string
 | 
			
		||||
 | 
			
		||||
  created: Date
 | 
			
		||||
  date_created: Date
 | 
			
		||||
 | 
			
		||||
  started?: Date
 | 
			
		||||
  done?: Date
 | 
			
		||||
 | 
			
		||||
  result: string
 | 
			
		||||
 | 
			
		||||
  related_document?: number
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { HttpClient } from '@angular/common/http'
 | 
			
		||||
import { Injectable } from '@angular/core'
 | 
			
		||||
import { first, map } from 'rxjs/operators'
 | 
			
		||||
import { first } from 'rxjs/operators'
 | 
			
		||||
import {
 | 
			
		||||
  PaperlessTask,
 | 
			
		||||
  PaperlessTaskStatus,
 | 
			
		||||
@@ -27,7 +27,7 @@ export class TasksService {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public get queuedFileTasks(): PaperlessTask[] {
 | 
			
		||||
    return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Queued)
 | 
			
		||||
    return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Pending)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public get startedFileTasks(): PaperlessTask[] {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user