From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 9 Dec 2022 11:31:26 +0000 (-0800) Subject: Merge branch 'dev' into feature-permissions X-Git-Tag: v1.14.0-beta.rc1~109^2~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fad13b5000acbb362c56c178e3893a31907c356;p=thirdparty%2Fpaperless-ngx.git Merge branch 'dev' into feature-permissions --- 8fad13b5000acbb362c56c178e3893a31907c356 diff --cc src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html index cb4e200dd8,d8345fd81a..cca53552c0 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html @@@ -69,14 -65,7 +69,14 @@@
-
+
+ + +
- ++ +
+
+
+ +
+ +
+ +
+
+

Include:

+
+
+ + +
+
+ + +
- - - +
+
- +
- +
diff --cc src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index 32ad28ba78,dbfb9d2f06..a69f1416c1 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@@ -25,9 -25,8 +25,11 @@@ import { saveAs } from 'file-saver import { StoragePathService } from 'src/app/services/rest/storage-path.service' import { PaperlessStoragePath } from 'src/app/data/paperless-storage-path' import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings' +import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' +import { PermissionsDialogComponent } from '../../common/permissions-dialog/permissions-dialog.component' +import { PermissionsService } from 'src/app/services/permissions.service' + import { FormControl, FormGroup } from '@angular/forms' + import { first, Subject, takeUntil } from 'rxjs' @Component({ selector: 'app-bulk-editor', @@@ -414,21 -456,11 +481,23 @@@ export class BulkEditorComponent extend modal.componentInstance.message = $localize`This operation cannot be undone.` modal.componentInstance.btnClass = 'btn-danger' modal.componentInstance.btnCaption = $localize`Proceed` - modal.componentInstance.confirmClicked.subscribe(() => { - modal.componentInstance.buttonsEnabled = false - this.executeBulkOperation(modal, 'redo_ocr', {}) - }) + modal.componentInstance.confirmClicked + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe(() => { + modal.componentInstance.buttonsEnabled = false + this.executeBulkOperation(modal, 'redo_ocr', {}) + }) } + + setPermissions() { + let modal = this.modalService.open(PermissionsDialogComponent, { + backdrop: 'static', + }) + modal.componentInstance.confirmClicked.subscribe((permissions) => { + modal.componentInstance.buttonsEnabled = false + this.executeBulkOperation(modal, 'set_permissions', { + permissions, + }) + }) + } } diff --cc src/documents/tests/test_api.py index 4d7f7a354a,c9d8aefc25..b5c7d9a6a4 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@@ -2331,33 -2327,11 +2331,36 @@@ class TestBulkEdit(DirectoriesMixin, AP ], ) + def test_set_permissions(self): + user1 = User.objects.create(username="user1") + user2 = User.objects.create(username="user2") + permissions = { + "view": { + "users": User.objects.filter(id__in=[user1.id, user2.id]), + "groups": Group.objects.none(), + }, + "change": { + "users": User.objects.filter(id__in=[user1.id]), + "groups": Group.objects.none(), + }, + } + + bulk_edit.set_permissions( + [self.doc2.id, self.doc3.id], + permissions=permissions, + ) + + self.assertEqual(get_users_with_perms(self.doc2).count(), 2) + + self.async_task.assert_called_once() + args, kwargs = self.async_task.call_args + self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id]) + class TestBulkDownload(DirectoriesMixin, APITestCase): + + ENDPOINT = "/api/documents/bulk_download/" + def setUp(self): super().setUp()