mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Enhancement: bulk delete objects (#5688)
This commit is contained in:
		| @@ -2,7 +2,10 @@ import { HttpTestingController } from '@angular/common/http/testing' | ||||
| import { Subscription } from 'rxjs' | ||||
| import { TestBed } from '@angular/core/testing' | ||||
| import { environment } from 'src/environments/environment' | ||||
| import { AbstractNameFilterService } from './abstract-name-filter-service' | ||||
| import { | ||||
|   AbstractNameFilterService, | ||||
|   BulkEditObjectOperation, | ||||
| } from './abstract-name-filter-service' | ||||
| import { commonAbstractPaperlessServiceTests } from './abstract-paperless-service.spec' | ||||
|  | ||||
| let httpTestingController: HttpTestingController | ||||
| @@ -53,8 +56,9 @@ export const commonAbstractNameFilterPaperlessServiceTests = ( | ||||
|         }, | ||||
|       } | ||||
|       subscription = service | ||||
|         .bulk_update_permissions( | ||||
|         .bulk_edit_objects( | ||||
|           [1, 2], | ||||
|           BulkEditObjectOperation.SetPermissions, | ||||
|           { | ||||
|             owner, | ||||
|             set_permissions: permissions, | ||||
| @@ -63,9 +67,33 @@ export const commonAbstractNameFilterPaperlessServiceTests = ( | ||||
|         ) | ||||
|         .subscribe() | ||||
|       const req = httpTestingController.expectOne( | ||||
|         `${environment.apiBaseUrl}bulk_edit_object_perms/` | ||||
|         `${environment.apiBaseUrl}bulk_edit_objects/` | ||||
|       ) | ||||
|       expect(req.request.method).toEqual('POST') | ||||
|       expect(req.request.body).toEqual({ | ||||
|         objects: [1, 2], | ||||
|         object_type: endpoint, | ||||
|         operation: BulkEditObjectOperation.SetPermissions, | ||||
|         permissions, | ||||
|         owner, | ||||
|         merge: true, | ||||
|       }) | ||||
|       req.flush([]) | ||||
|     }) | ||||
|  | ||||
|     test('should call appropriate api endpoint for bulk delete objects', () => { | ||||
|       subscription = service | ||||
|         .bulk_edit_objects([1, 2], BulkEditObjectOperation.Delete) | ||||
|         .subscribe() | ||||
|       const req = httpTestingController.expectOne( | ||||
|         `${environment.apiBaseUrl}bulk_edit_objects/` | ||||
|       ) | ||||
|       expect(req.request.method).toEqual('POST') | ||||
|       expect(req.request.body).toEqual({ | ||||
|         objects: [1, 2], | ||||
|         object_type: endpoint, | ||||
|         operation: BulkEditObjectOperation.Delete, | ||||
|       }) | ||||
|       req.flush([]) | ||||
|     }) | ||||
|   }) | ||||
|   | ||||
| @@ -3,6 +3,11 @@ import { AbstractPaperlessService } from './abstract-paperless-service' | ||||
| import { PermissionsObject } from 'src/app/data/object-with-permissions' | ||||
| import { Observable } from 'rxjs' | ||||
|  | ||||
| export enum BulkEditObjectOperation { | ||||
|   SetPermissions = 'set_permissions', | ||||
|   Delete = 'delete', | ||||
| } | ||||
|  | ||||
| export abstract class AbstractNameFilterService< | ||||
|   T extends ObjectWithId, | ||||
| > extends AbstractPaperlessService<T> { | ||||
| @@ -24,17 +29,22 @@ export abstract class AbstractNameFilterService< | ||||
|     return this.list(page, pageSize, sortField, sortReverse, params) | ||||
|   } | ||||
|  | ||||
|   bulk_update_permissions( | ||||
|   bulk_edit_objects( | ||||
|     objects: Array<number>, | ||||
|     permissions: { owner: number; set_permissions: PermissionsObject }, | ||||
|     merge: boolean | ||||
|     operation: BulkEditObjectOperation, | ||||
|     permissions: { owner: number; set_permissions: PermissionsObject } = null, | ||||
|     merge: boolean = null | ||||
|   ): Observable<string> { | ||||
|     return this.http.post<string>(`${this.baseUrl}bulk_edit_object_perms/`, { | ||||
|     const params = { | ||||
|       objects, | ||||
|       object_type: this.resourceName, | ||||
|       owner: permissions.owner, | ||||
|       permissions: permissions.set_permissions, | ||||
|       merge, | ||||
|     }) | ||||
|       operation, | ||||
|     } | ||||
|     if (operation === BulkEditObjectOperation.SetPermissions) { | ||||
|       params['owner'] = permissions?.owner | ||||
|       params['permissions'] = permissions?.set_permissions | ||||
|       params['merge'] = merge | ||||
|     } | ||||
|     return this.http.post<string>(`${this.baseUrl}bulk_edit_objects/`, params) | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon