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 @@@
-
+
+
+
+
-
+
+
+
+
+
+
+ Preparing download...
+
+ Download
+
+
-
- Delete
-
+
-
++
+ Delete
+
+
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()