diff --git a/Pipfile b/Pipfile
index 09065956b..2684ef2da 100644
--- a/Pipfile
+++ b/Pipfile
@@ -61,6 +61,9 @@ bleach = "*"
scipy = "==1.8.1"
# Newer versions aren't builting yet (see https://www.piwheels.org/project/cryptography/)
cryptography = "==38.0.1"
+django-guardian = "*"
+djangorestframework-guardian = "*"
+
# Locked version until https://github.com/django/channels_redis/issues/332
# is resolved
channels-redis = "==3.4.1"
diff --git a/Pipfile.lock b/Pipfile.lock
index a161f9d82..efe0eabbb 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "d70848276d3ac35fa361c15ac2d634344cdb08618790502669eee209fc16fa00"
+ "sha256": "99f415c5ce96020dc3fcb137dc15d47cc5431686bdce1ca42e6254a2719060a8"
},
"pipfile-spec": 6,
"requires": {},
@@ -313,7 +313,7 @@
"sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845",
"sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"
],
- "markers": "python_full_version >= '3.6.0'",
+ "markers": "python_version >= '3.6'",
"version": "==2.1.1"
},
"click": {
@@ -329,7 +329,7 @@
"sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667",
"sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"
],
- "markers": "python_full_version >= '3.6.2' and python_full_version < '4.0.0'",
+ "markers": "python_version < '4' and python_full_version >= '3.6.2'",
"version": "==0.3.0"
},
"click-plugins": {
@@ -472,6 +472,14 @@
"index": "pypi",
"version": "==22.1"
},
+ "django-guardian": {
+ "hashes": [
+ "sha256:440ca61358427e575323648b25f8384739e54c38b3d655c81d75e0cd0d61b697",
+ "sha256:c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0"
+ ],
+ "index": "pypi",
+ "version": "==2.4.0"
+ },
"djangorestframework": {
"hashes": [
"sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8",
@@ -480,6 +488,14 @@
"index": "pypi",
"version": "==3.14.0"
},
+ "djangorestframework-guardian": {
+ "hashes": [
+ "sha256:1883756452d9bfcc2a51fb4e039a6837a8f6697c756447aa83af085749b59330",
+ "sha256:3bd3dd6ea58e1bceca5048faf6f8b1a93bb5dcff30ba5eb91b9a0e190a48a0c7"
+ ],
+ "index": "pypi",
+ "version": "==0.3.0"
+ },
"filelock": {
"hashes": [
"sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de",
@@ -2205,7 +2221,7 @@
"sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845",
"sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"
],
- "markers": "python_full_version >= '3.6.0'",
+ "markers": "python_version >= '3.6'",
"version": "==2.1.1"
},
"click": {
@@ -2401,7 +2417,7 @@
"sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874",
"sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"
],
- "markers": "python_version >= '3.6'",
+ "markers": "python_full_version >= '3.6.0'",
"version": "==3.3.7"
},
"markupsafe": {
@@ -2455,7 +2471,7 @@
"sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8",
"sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"
],
- "markers": "python_version >= '3.6'",
+ "markers": "python_full_version >= '3.6.0'",
"version": "==1.3.4"
},
"mkdocs": {
@@ -2800,7 +2816,7 @@
"sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb",
"sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"
],
- "markers": "python_version >= '3.6'",
+ "markers": "python_full_version >= '3.6.0'",
"version": "==0.1"
},
"regex": {
@@ -2987,7 +3003,7 @@
"sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4",
"sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"
],
- "markers": "python_version >= '3.6'",
+ "markers": "python_full_version >= '3.6.0'",
"version": "==20.17.1"
},
"watchdog": {
diff --git a/docs/api.md b/docs/api.md
index 2c200dea7..2ed1cbce8 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -16,6 +16,8 @@ The API provides 7 main endpoints:
- `/api/tags/`: Full CRUD support.
- `/api/mail_accounts/`: Full CRUD support.
- `/api/mail_rules/`: Full CRUD support.
+- `/api/users/`: Full CRUD support.
+- `/api/groups/`: Full CRUD support.
All of these endpoints except for the logging endpoint allow you to
fetch, edit and delete individual objects by appending their primary key
@@ -254,6 +256,7 @@ The endpoint supports the following optional form fields:
- `document_type`: Similar to correspondent.
- `tags`: Similar to correspondent. Specify this multiple times to
have multiple tags added to the document.
+- `owner`: An optional user ID to set as the owner.
The endpoint will immediately return "OK" if the document consumption
process was started successfully. No additional status information about
diff --git a/docs/usage.md b/docs/usage.md
index 6a0277d45..e162e6e3a 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -202,6 +202,39 @@ configured via `PAPERLESS_EMAIL_TASK_CRON` (see [software tweaks](/configuration
You can also submit a document using the REST API, see [POSTing documents](/api#file-uploads)
for details.
+## Permissions
+
+As of version 1.13.0 Paperless-ngx added core support for user / group permissions. Permissions is
+based around an object 'owner' and 'view' and 'edit' permissions can be granted to other users
+or groups.
+
+Permissions uses the built-in user model of the backend framework, Django.
+
+!!! note
+
+ After migration to version 1.13.0 all existing documents, tags etc. will have no explicit owner
+ set which means they will be visible / editable by all users. Once an object has an owner set,
+ only the owner can explicitly grant / revoke permissions.
+
+!!! note
+
+ When first migrating to permissions it is recommended to user a 'superuser' account (which
+ would usually have been setup during installation) to ensure you have full permissions.
+
+ Note that superusers have access to all objects.
+
+Permissions can be set using the new "Permissions" tab when editing documents, or bulk-applied
+in the UI by selecting documents and choosing the "Permissions" button. Owner can also optionally
+be set for documents uploaded via the API. Documents consumed via the consumption dir currently
+do not have an owner set.
+
+### Users and Groups
+
+Paperless-ngx versions after 1.13.0 allow creating and editing users and groups via the 'frontend' UI.
+These can be found under Settings > Users & Groups, assuming the user has access. If a user is designated
+as a member of a group those permissions will be inherited and this is reflected in the UI. Explicit
+permissions can be granted to limit access to certain parts of the UI (and corresponding API endpoints).
+
## Best practices {#basic-searching}
Paperless offers a couple tools that help you organize your document
diff --git a/src-ui/cypress/e2e/auth/auth.cy.ts b/src-ui/cypress/e2e/auth/auth.cy.ts
new file mode 100644
index 000000000..717113c76
--- /dev/null
+++ b/src-ui/cypress/e2e/auth/auth.cy.ts
@@ -0,0 +1,68 @@
+describe('settings', () => {
+ beforeEach(() => {
+ // also uses global fixtures from cypress/support/e2e.ts
+
+ // mock restricted permissions
+ cy.intercept('http://localhost:8000/api/ui_settings/', {
+ fixture: 'ui_settings/settings_restricted.json',
+ })
+ })
+
+ it('should not allow user to edit settings', () => {
+ cy.visit('/dashboard')
+ cy.contains('Settings').should('not.exist')
+ cy.visit('/settings').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view documents', () => {
+ cy.visit('/dashboard')
+ cy.contains('Documents').should('not.exist')
+ cy.visit('/documents').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ cy.visit('/documents/1').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view correspondents', () => {
+ cy.visit('/dashboard')
+ cy.contains('Correspondents').should('not.exist')
+ cy.visit('/correspondents').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view tags', () => {
+ cy.visit('/dashboard')
+ cy.contains('Tags').should('not.exist')
+ cy.visit('/tags').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view document types', () => {
+ cy.visit('/dashboard')
+ cy.contains('Document Types').should('not.exist')
+ cy.visit('/documenttypes').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view storage paths', () => {
+ cy.visit('/dashboard')
+ cy.contains('Storage Paths').should('not.exist')
+ cy.visit('/storagepaths').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view logs', () => {
+ cy.visit('/dashboard')
+ cy.contains('Logs').should('not.exist')
+ cy.visit('/logs').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+
+ it('should not allow user to view tasks', () => {
+ cy.visit('/dashboard')
+ cy.contains('Tasks').should('not.exist')
+ cy.visit('/tasks').wait(2000)
+ cy.contains("You don't have permissions to do that").should('exist')
+ })
+})
diff --git a/src-ui/cypress/fixtures/documents/1/comments.json b/src-ui/cypress/fixtures/documents/1/comments.json
index 73e932187..a6013b513 100644
--- a/src-ui/cypress/fixtures/documents/1/comments.json
+++ b/src-ui/cypress/fixtures/documents/1/comments.json
@@ -6,8 +6,8 @@
"user": {
"id": 1,
"username": "user2",
- "firstname": "",
- "lastname": ""
+ "first_name": "",
+ "last_name": ""
}
},
{
@@ -17,8 +17,8 @@
"user": {
"id": 2,
"username": "user1",
- "firstname": "",
- "lastname": ""
+ "first_name": "",
+ "last_name": ""
}
},
{
@@ -28,8 +28,8 @@
"user": {
"id": 2,
"username": "user33",
- "firstname": "",
- "lastname": ""
+ "first_name": "",
+ "last_name": ""
}
},
{
@@ -39,8 +39,8 @@
"user": {
"id": 3,
"username": "admin",
- "firstname": "",
- "lastname": ""
+ "first_name": "",
+ "last_name": ""
}
}
]
diff --git a/src-ui/cypress/fixtures/documents/documents.json b/src-ui/cypress/fixtures/documents/documents.json
index bcf122ecc..211401b4b 100644
--- a/src-ui/cypress/fixtures/documents/documents.json
+++ b/src-ui/cypress/fixtures/documents/documents.json
@@ -14,11 +14,14 @@
4
],
"created": "2022-03-22T07:24:18Z",
+ "created_date": "2022-03-22",
"modified": "2022-03-22T07:24:23.264859Z",
"added": "2022-03-22T07:24:22.922631Z",
"archive_serial_number": null,
"original_file_name": "2022-03-22 no latin title.pdf",
- "archived_file_name": "2022-03-22 no latin title.pdf"
+ "archived_file_name": "2022-03-22 no latin title.pdf",
+ "owner": null,
+ "permissions": []
},
{
"id": 2,
@@ -29,11 +32,14 @@
"content": "Test document PDF",
"tags": [],
"created": "2022-03-23T07:24:18Z",
+ "created_date": "2022-03-23",
"modified": "2022-03-23T07:24:23.264859Z",
"added": "2022-03-23T07:24:22.922631Z",
"archive_serial_number": 12345,
"original_file_name": "2022-03-23 lorem ipsum dolor sit amet.pdf",
- "archived_file_name": "2022-03-23 llorem ipsum dolor sit amet.pdf"
+ "archived_file_name": "2022-03-23 llorem ipsum dolor sit amet.pdf",
+ "owner": null,
+ "permissions": []
},
{
"id": 3,
@@ -46,11 +52,14 @@
2
],
"created": "2022-03-24T07:24:18Z",
+ "created_date": "2022-03-24",
"modified": "2022-03-24T07:24:23.264859Z",
"added": "2022-03-24T07:24:22.922631Z",
"archive_serial_number": null,
"original_file_name": "2022-03-24 dolor.pdf",
- "archived_file_name": "2022-03-24 dolor.pdf"
+ "archived_file_name": "2022-03-24 dolor.pdf",
+ "owner": null,
+ "permissions": []
},
{
"id": 4,
@@ -63,11 +72,14 @@
4, 5
],
"created": "2022-06-01T07:24:18Z",
+ "created_date": "2022-06-01",
"modified": "2022-06-01T07:24:23.264859Z",
"added": "2022-06-01T07:24:22.922631Z",
"archive_serial_number": 12347,
"original_file_name": "2022-06-01 sit amet.pdf",
- "archived_file_name": "2022-06-01 sit amet.pdf"
+ "archived_file_name": "2022-06-01 sit amet.pdf",
+ "owner": null,
+ "permissions": []
}
]
}
diff --git a/src-ui/cypress/fixtures/groups/groups.json b/src-ui/cypress/fixtures/groups/groups.json
new file mode 100644
index 000000000..0bf2655d9
--- /dev/null
+++ b/src-ui/cypress/fixtures/groups/groups.json
@@ -0,0 +1,119 @@
+{
+ "count": 2,
+ "next": null,
+ "previous": null,
+ "results": [
+ {
+ "id": 6,
+ "name": "Another Group",
+ "permissions": [
+ "add_user",
+ "change_user",
+ "delete_user",
+ "view_user",
+ "add_comment",
+ "change_comment",
+ "delete_comment",
+ "view_comment"
+ ]
+ },
+ {
+ "id": 1,
+ "name": "First Group",
+ "permissions": [
+ "add_group",
+ "change_group",
+ "delete_group",
+ "view_group",
+ "add_permission",
+ "change_permission",
+ "delete_permission",
+ "view_permission",
+ "add_token",
+ "change_token",
+ "delete_token",
+ "view_token",
+ "add_tokenproxy",
+ "change_tokenproxy",
+ "delete_tokenproxy",
+ "view_tokenproxy",
+ "add_contenttype",
+ "change_contenttype",
+ "delete_contenttype",
+ "view_contenttype",
+ "add_chordcounter",
+ "change_chordcounter",
+ "delete_chordcounter",
+ "view_chordcounter",
+ "add_groupresult",
+ "change_groupresult",
+ "delete_groupresult",
+ "view_groupresult",
+ "add_taskresult",
+ "change_taskresult",
+ "delete_taskresult",
+ "view_taskresult",
+ "add_failure",
+ "change_failure",
+ "delete_failure",
+ "view_failure",
+ "add_ormq",
+ "change_ormq",
+ "delete_ormq",
+ "view_ormq",
+ "add_schedule",
+ "change_schedule",
+ "delete_schedule",
+ "view_schedule",
+ "add_success",
+ "change_success",
+ "delete_success",
+ "view_success",
+ "add_task",
+ "change_task",
+ "delete_task",
+ "view_task",
+ "add_comment",
+ "change_comment",
+ "delete_comment",
+ "view_comment",
+ "add_correspondent",
+ "change_correspondent",
+ "delete_correspondent",
+ "view_correspondent",
+ "add_document",
+ "change_document",
+ "delete_document",
+ "view_document",
+ "add_documenttype",
+ "change_documenttype",
+ "delete_documenttype",
+ "view_documenttype",
+ "add_frontendsettings",
+ "change_frontendsettings",
+ "delete_frontendsettings",
+ "view_frontendsettings",
+ "add_log",
+ "change_log",
+ "delete_log",
+ "view_log",
+ "add_savedview",
+ "change_savedview",
+ "delete_savedview",
+ "view_savedview",
+ "add_savedviewfilterrule",
+ "change_savedviewfilterrule",
+ "delete_savedviewfilterrule",
+ "view_savedviewfilterrule",
+ "add_taskattributes",
+ "change_taskattributes",
+ "delete_taskattributes",
+ "view_taskattributes",
+ "add_session",
+ "change_session",
+ "delete_session",
+ "view_session"
+ ]
+ }
+ ]
+}
diff --git a/src-ui/cypress/fixtures/ui_settings/settings.json b/src-ui/cypress/fixtures/ui_settings/settings.json
index 0e844b5e1..bc86255fc 100644
--- a/src-ui/cypress/fixtures/ui_settings/settings.json
+++ b/src-ui/cypress/fixtures/ui_settings/settings.json
@@ -1,7 +1,6 @@
{
"user_id": 1,
"username": "admin",
- "display_name": "Admin",
"settings": {
"language": "",
"bulk_edit": {
@@ -30,5 +29,131 @@
"consumer_failed": true,
"consumer_suppress_on_dashboard": true
}
- }
+ },
+ "permissions": [
+ "add_logentry",
+ "change_logentry",
+ "delete_logentry",
+ "view_logentry",
+ "add_group",
+ "change_group",
+ "delete_group",
+ "view_group",
+ "add_permission",
+ "change_permission",
+ "delete_permission",
+ "view_permission",
+ "add_user",
+ "change_user",
+ "delete_user",
+ "view_user",
+ "add_token",
+ "change_token",
+ "delete_token",
+ "view_token",
+ "add_tokenproxy",
+ "change_tokenproxy",
+ "delete_tokenproxy",
+ "view_tokenproxy",
+ "add_contenttype",
+ "change_contenttype",
+ "delete_contenttype",
+ "view_contenttype",
+ "add_chordcounter",
+ "change_chordcounter",
+ "delete_chordcounter",
+ "view_chordcounter",
+ "add_groupresult",
+ "change_groupresult",
+ "delete_groupresult",
+ "view_groupresult",
+ "add_taskresult",
+ "change_taskresult",
+ "delete_taskresult",
+ "view_taskresult",
+ "add_failure",
+ "change_failure",
+ "delete_failure",
+ "view_failure",
+ "add_ormq",
+ "change_ormq",
+ "delete_ormq",
+ "view_ormq",
+ "add_schedule",
+ "change_schedule",
+ "delete_schedule",
+ "view_schedule",
+ "add_success",
+ "change_success",
+ "delete_success",
+ "view_success",
+ "add_task",
+ "change_task",
+ "delete_task",
+ "view_task",
+ "add_comment",
+ "change_comment",
+ "delete_comment",
+ "view_comment",
+ "add_correspondent",
+ "change_correspondent",
+ "delete_correspondent",
+ "view_correspondent",
+ "add_document",
+ "change_document",
+ "delete_document",
+ "view_document",
+ "add_documenttype",
+ "change_documenttype",
+ "delete_documenttype",
+ "view_documenttype",
+ "add_frontendsettings",
+ "change_frontendsettings",
+ "delete_frontendsettings",
+ "view_frontendsettings",
+ "add_log",
+ "change_log",
+ "delete_log",
+ "view_log",
+ "add_paperlesstask",
+ "change_paperlesstask",
+ "delete_paperlesstask",
+ "view_paperlesstask",
+ "add_savedview",
+ "change_savedview",
+ "delete_savedview",
+ "view_savedview",
+ "add_savedviewfilterrule",
+ "change_savedviewfilterrule",
+ "delete_savedviewfilterrule",
+ "view_savedviewfilterrule",
+ "add_storagepath",
+ "change_storagepath",
+ "delete_storagepath",
+ "view_storagepath",
+ "add_tag",
+ "change_tag",
+ "delete_tag",
+ "view_tag",
+ "add_taskattributes",
+ "change_taskattributes",
+ "delete_taskattributes",
+ "view_taskattributes",
+ "add_uisettings",
+ "change_uisettings",
+ "delete_uisettings",
+ "view_uisettings",
+ "add_mailaccount",
+ "change_mailaccount",
+ "delete_mailaccount",
+ "view_mailaccount",
+ "add_mailrule",
+ "change_mailrule",
+ "delete_mailrule",
+ "view_mailrule",
+ "add_session",
+ "change_session",
+ "delete_session",
+ "view_session"
+ ]
}
diff --git a/src-ui/cypress/fixtures/ui_settings/settings_restricted.json b/src-ui/cypress/fixtures/ui_settings/settings_restricted.json
new file mode 100644
index 000000000..4bc8a2d41
--- /dev/null
+++ b/src-ui/cypress/fixtures/ui_settings/settings_restricted.json
@@ -0,0 +1,84 @@
+{
+ "user_id": 1,
+ "username": "admin",
+ "settings": {
+ "language": "",
+ "bulk_edit": {
+ "confirmation_dialogs": true,
+ "apply_on_close": false
+ },
+ "documentListSize": 50,
+ "dark_mode": {
+ "use_system": true,
+ "enabled": "false",
+ "thumb_inverted": "true"
+ },
+ "theme": {
+ "color": "#b198e5"
+ },
+ "document_details": {
+ "native_pdf_viewer": false
+ },
+ "date_display": {
+ "date_locale": "",
+ "date_format": "mediumDate"
+ },
+ "notifications": {
+ "consumer_new_documents": true,
+ "consumer_success": true,
+ "consumer_failed": true,
+ "consumer_suppress_on_dashboard": true
+ }
+ },
+ "permissions": [
+ "add_token",
+ "change_token",
+ "delete_token",
+ "view_token",
+ "add_tokenproxy",
+ "change_tokenproxy",
+ "delete_tokenproxy",
+ "view_tokenproxy",
+ "add_contenttype",
+ "change_contenttype",
+ "delete_contenttype",
+ "view_contenttype",
+ "add_chordcounter",
+ "change_chordcounter",
+ "delete_chordcounter",
+ "view_chordcounter",
+ "add_groupresult",
+ "change_groupresult",
+ "delete_groupresult",
+ "view_groupresult",
+ "add_failure",
+ "change_failure",
+ "delete_failure",
+ "view_failure",
+ "add_ormq",
+ "change_ormq",
+ "delete_ormq",
+ "view_ormq",
+ "add_schedule",
+ "change_schedule",
+ "delete_schedule",
+ "view_schedule",
+ "add_success",
+ "change_success",
+ "delete_success",
+ "view_success",
+ "add_task",
+ "change_task",
+ "delete_task",
+ "view_task",
+ "add_comment",
+ "add_frontendsettings",
+ "change_frontendsettings",
+ "delete_frontendsettings",
+ "view_frontendsettings",
+ "add_session",
+ "change_session",
+ "delete_session",
+ "view_session"
+ ]
+}
diff --git a/src-ui/cypress/fixtures/users/users.json b/src-ui/cypress/fixtures/users/users.json
new file mode 100644
index 000000000..ca477667a
--- /dev/null
+++ b/src-ui/cypress/fixtures/users/users.json
@@ -0,0 +1,459 @@
+{
+ "count": 4,
+ "next": null,
+ "previous": null,
+ "results": [
+ {
+ "id": 3,
+ "username": "admin",
+ "password": "**********",
+ "first_name": "",
+ "last_name": "",
+ "date_joined": "2022-02-14T23:11:09.103293Z",
+ "is_staff": true,
+ "is_active": true,
+ "is_superuser": true,
+ "groups": [],
+ "user_permissions": [],
+ "inherited_permissions": [
+ "auth.delete_permission",
+ "paperless_mail.change_mailrule",
+ "django_celery_results.add_taskresult",
+ "documents.view_taskattributes",
+ "documents.view_paperlesstask",
+ "django_q.add_success",
+ "documents.view_uisettings",
+ "auth.change_user",
+ "admin.delete_logentry",
+ "django_celery_results.change_taskresult",
+ "django_q.change_schedule",
+ "django_celery_results.delete_taskresult",
+ "paperless_mail.add_mailaccount",
+ "auth.change_group",
+ "documents.add_comment",
+ "paperless_mail.delete_mailaccount",
+ "authtoken.delete_tokenproxy",
+ "guardian.delete_groupobjectpermission",
+ "contenttypes.delete_contenttype",
+ "documents.change_correspondent",
+ "authtoken.delete_token",
+ "documents.delete_documenttype",
+ "django_q.change_ormq",
+ "documents.change_savedviewfilterrule",
+ "auth.delete_group",
+ "documents.add_documenttype",
+ "django_q.change_success",
+ "documents.delete_tag",
+ "documents.change_comment",
+ "django_q.delete_task",
+ "documents.add_savedviewfilterrule",
+ "django_q.view_task",
+ "paperless_mail.add_mailrule",
+ "paperless_mail.view_mailaccount",
+ "documents.add_frontendsettings",
+ "sessions.change_session",
+ "documents.view_savedview",
+ "authtoken.add_tokenproxy",
+ "documents.change_tag",
+ "documents.view_document",
+ "documents.add_savedview",
+ "auth.delete_user",
+ "documents.view_log",
+ "documents.view_comment",
+ "guardian.change_groupobjectpermission",
+ "sessions.delete_session",
+ "django_q.change_failure",
+ "guardian.change_userobjectpermission",
+ "documents.change_storagepath",
+ "documents.delete_document",
+ "documents.delete_taskattributes",
+ "django_celery_results.change_groupresult",
+ "django_q.add_ormq",
+ "guardian.view_groupobjectpermission",
+ "admin.change_logentry",
+ "django_q.delete_schedule",
+ "documents.delete_paperlesstask",
+ "django_q.view_ormq",
+ "documents.change_paperlesstask",
+ "guardian.delete_userobjectpermission",
+ "auth.view_permission",
+ "auth.view_user",
+ "django_q.add_schedule",
+ "authtoken.change_token",
+ "guardian.add_groupobjectpermission",
+ "documents.view_documenttype",
+ "documents.change_log",
+ "paperless_mail.delete_mailrule",
+ "auth.view_group",
+ "authtoken.view_token",
+ "admin.view_logentry",
+ "django_celery_results.view_chordcounter",
+ "django_celery_results.view_groupresult",
+ "documents.view_storagepath",
+ "documents.add_storagepath",
+ "django_celery_results.add_groupresult",
+ "documents.view_tag",
+ "guardian.view_userobjectpermission",
+ "documents.delete_correspondent",
+ "documents.add_tag",
+ "documents.delete_savedviewfilterrule",
+ "documents.add_correspondent",
+ "authtoken.view_tokenproxy",
+ "documents.delete_frontendsettings",
+ "django_celery_results.delete_chordcounter",
+ "django_q.change_task",
+ "documents.add_taskattributes",
+ "documents.delete_storagepath",
+ "sessions.add_session",
+ "documents.add_uisettings",
+ "documents.change_taskattributes",
+ "documents.delete_uisettings",
+ "django_q.delete_ormq",
+ "auth.change_permission",
+ "documents.view_savedviewfilterrule",
+ "documents.change_frontendsettings",
+ "documents.change_documenttype",
+ "documents.view_correspondent",
+ "auth.add_user",
+ "paperless_mail.change_mailaccount",
+ "documents.add_paperlesstask",
+ "django_q.view_success",
+ "django_celery_results.delete_groupresult",
+ "documents.delete_savedview",
+ "authtoken.change_tokenproxy",
+ "documents.view_frontendsettings",
+ "authtoken.add_token",
+ "django_celery_results.add_chordcounter",
+ "contenttypes.change_contenttype",
+ "admin.add_logentry",
+ "django_q.delete_failure",
+ "documents.change_uisettings",
+ "django_q.view_failure",
+ "documents.add_log",
+ "documents.change_savedview",
+ "paperless_mail.view_mailrule",
+ "django_q.view_schedule",
+ "documents.change_document",
+ "django_celery_results.change_chordcounter",
+ "documents.add_document",
+ "django_celery_results.view_taskresult",
+ "contenttypes.add_contenttype",
+ "django_q.delete_success",
+ "documents.delete_comment",
+ "django_q.add_failure",
+ "guardian.add_userobjectpermission",
+ "sessions.view_session",
+ "contenttypes.view_contenttype",
+ "auth.add_permission",
+ "documents.delete_log",
+ "django_q.add_task",
+ "auth.add_group"
+ ]
+ },
+ {
+ "id": 15,
+ "username": "test",
+ "password": "**********",
+ "first_name": "",
+ "last_name": "",
+ "date_joined": "2022-11-23T08:30:54Z",
+ "is_staff": true,
+ "is_active": true,
+ "is_superuser": false,
+ "groups": [
+ 1
+ ],
+ "user_permissions": [
+ "add_group",
+ "change_group",
+ "delete_group",
+ "view_group",
+ "add_permission",
+ "change_permission",
+ "delete_permission",
+ "view_permission",
+ "add_token",
+ "change_token",
+ "delete_token",
+ "view_token",
+ "add_tokenproxy",
+ "change_tokenproxy",
+ "delete_tokenproxy",
+ "view_tokenproxy",
+ "add_contenttype",
+ "change_contenttype",
+ "delete_contenttype",
+ "view_contenttype",
+ "add_chordcounter",
+ "change_chordcounter",
+ "delete_chordcounter",
+ "view_chordcounter",
+ "add_groupresult",
+ "change_groupresult",
+ "delete_groupresult",
+ "view_groupresult",
+ "add_taskresult",
+ "change_taskresult",
+ "delete_taskresult",
+ "view_taskresult",
+ "add_failure",
+ "change_failure",
+ "delete_failure",
+ "view_failure",
+ "add_ormq",
+ "change_ormq",
+ "delete_ormq",
+ "view_ormq",
+ "add_schedule",
+ "change_schedule",
+ "delete_schedule",
+ "view_schedule",
+ "add_success",
+ "change_success",
+ "delete_success",
+ "view_success",
+ "add_task",
+ "change_task",
+ "delete_task",
+ "view_task",
+ "add_comment",
+ "change_comment",
+ "delete_comment",
+ "view_comment",
+ "add_frontendsettings",
+ "change_frontendsettings",
+ "delete_frontendsettings",
+ "view_frontendsettings",
+ "add_log",
+ "change_log",
+ "delete_log",
+ "view_log",
+ "add_savedviewfilterrule",
+ "change_savedviewfilterrule",
+ "delete_savedviewfilterrule",
+ "view_savedviewfilterrule",
+ "add_taskattributes",
+ "change_taskattributes",
+ "delete_taskattributes",
+ "view_taskattributes",
+ "add_session",
+ "change_session",
+ "delete_session",
+ "view_session"
+ ],
+ "inherited_permissions": [
+ "auth.delete_permission",
+ "django_celery_results.add_taskresult",
+ "documents.view_taskattributes",
+ "django_q.add_ormq",
+ "django_q.add_success",
+ "django_q.delete_schedule",
+ "django_q.view_ormq",
+ "auth.view_permission",
+ "django_q.add_schedule",
+ "django_celery_results.change_taskresult",
+ "django_q.change_schedule",
+ "django_celery_results.delete_taskresult",
+ "authtoken.change_token",
+ "auth.change_group",
+ "documents.add_comment",
+ "authtoken.delete_tokenproxy",
+ "documents.view_documenttype",
+ "contenttypes.delete_contenttype",
+ "documents.change_correspondent",
+ "authtoken.delete_token",
+ "documents.change_log",
+ "auth.view_group",
+ "authtoken.view_token",
+ "django_celery_results.view_chordcounter",
+ "django_celery_results.view_groupresult",
+ "documents.delete_documenttype",
+ "django_q.change_ormq",
+ "documents.change_savedviewfilterrule",
+ "django_celery_results.add_groupresult",
+ "auth.delete_group",
+ "documents.add_documenttype",
+ "django_q.change_success",
+ "auth.add_permission",
+ "documents.delete_correspondent",
+ "documents.delete_savedviewfilterrule",
+ "documents.add_correspondent",
+ "authtoken.view_tokenproxy",
+ "documents.delete_frontendsettings",
+ "django_celery_results.delete_chordcounter",
+ "documents.add_taskattributes",
+ "django_q.change_task",
+ "sessions.add_session",
+ "documents.change_taskattributes",
+ "documents.change_comment",
+ "django_q.delete_task",
+ "django_q.delete_ormq",
+ "auth.change_permission",
+ "documents.add_savedviewfilterrule",
+ "django_q.view_task",
+ "documents.view_savedviewfilterrule",
+ "documents.change_frontendsettings",
+ "documents.change_documenttype",
+ "documents.view_correspondent",
+ "django_q.view_success",
+ "documents.add_frontendsettings",
+ "django_celery_results.delete_groupresult",
+ "documents.delete_savedview",
+ "authtoken.change_tokenproxy",
+ "documents.view_frontendsettings",
+ "authtoken.add_token",
+ "sessions.change_session",
+ "django_celery_results.add_chordcounter",
+ "documents.view_savedview",
+ "contenttypes.change_contenttype",
+ "django_q.delete_failure",
+ "authtoken.add_tokenproxy",
+ "documents.view_document",
+ "documents.add_savedview",
+ "django_q.view_failure",
+ "documents.view_comment",
+ "documents.view_log",
+ "documents.add_log",
+ "documents.change_savedview",
+ "django_q.view_schedule",
+ "documents.change_document",
+ "django_celery_results.change_chordcounter",
+ "documents.add_document",
+ "sessions.delete_session",
+ "django_q.change_failure",
+ "django_celery_results.view_taskresult",
+ "contenttypes.add_contenttype",
+ "django_q.delete_success",
+ "documents.delete_comment",
+ "django_q.add_failure",
+ "sessions.view_session",
+ "contenttypes.view_contenttype",
+ "documents.delete_taskattributes",
+ "documents.delete_document",
+ "documents.delete_log",
+ "django_q.add_task",
+ "django_celery_results.change_groupresult",
+ "auth.add_group"
+ ]
+ },
+ {
+ "id": 6,
+ "username": "testuser",
+ "password": "**********",
+ "first_name": "",
+ "last_name": "",
+ "date_joined": "2022-11-16T04:14:20.484914Z",
+ "is_staff": false,
+ "is_active": true,
+ "is_superuser": false,
+ "groups": [
+ 1,
+ 6
+ ],
+ "user_permissions": [
+ "add_logentry",
+ "change_logentry",
+ "delete_logentry",
+ "view_logentry"
+ ],
+ "inherited_permissions": [
+ "auth.delete_permission",
+ "django_celery_results.add_taskresult",
+ "documents.view_taskattributes",
+ "django_q.add_ormq",
+ "django_q.add_success",
+ "django_q.delete_schedule",
+ "django_q.view_ormq",
+ "auth.change_user",
+ "auth.view_permission",
+ "auth.view_user",
+ "django_q.add_schedule",
+ "django_celery_results.change_taskresult",
+ "django_q.change_schedule",
+ "django_celery_results.delete_taskresult",
+ "authtoken.change_token",
+ "auth.change_group",
+ "documents.add_comment",
+ "authtoken.delete_tokenproxy",
+ "documents.view_documenttype",
+ "contenttypes.delete_contenttype",
+ "documents.change_correspondent",
+ "authtoken.delete_token",
+ "documents.change_log",
+ "auth.view_group",
+ "authtoken.view_token",
+ "django_celery_results.view_chordcounter",
+ "django_celery_results.view_groupresult",
+ "documents.delete_documenttype",
+ "django_q.change_ormq",
+ "documents.change_savedviewfilterrule",
+ "django_celery_results.add_groupresult",
+ "auth.delete_group",
+ "documents.add_documenttype",
+ "django_q.change_success",
+ "auth.add_permission",
+ "documents.delete_correspondent",
+ "documents.delete_savedviewfilterrule",
+ "documents.add_correspondent",
+ "authtoken.view_tokenproxy",
+ "documents.delete_frontendsettings",
+ "django_celery_results.delete_chordcounter",
+ "documents.add_taskattributes",
+ "django_q.change_task",
+ "sessions.add_session",
+ "documents.change_taskattributes",
+ "documents.change_comment",
+ "django_q.delete_task",
+ "django_q.delete_ormq",
+ "auth.change_permission",
+ "documents.add_savedviewfilterrule",
+ "django_q.view_task",
+ "documents.view_savedviewfilterrule",
+ "documents.change_frontendsettings",
+ "documents.change_documenttype",
+ "documents.view_correspondent",
+ "auth.add_user",
+ "django_q.view_success",
+ "documents.add_frontendsettings",
+ "django_celery_results.delete_groupresult",
+ "documents.delete_savedview",
+ "authtoken.change_tokenproxy",
+ "documents.view_frontendsettings",
+ "authtoken.add_token",
+ "sessions.change_session",
+ "django_celery_results.add_chordcounter",
+ "documents.view_savedview",
+ "contenttypes.change_contenttype",
+ "django_q.delete_failure",
+ "authtoken.add_tokenproxy",
+ "documents.view_document",
+ "documents.add_savedview",
+ "django_q.view_failure",
+ "documents.view_comment",
+ "documents.view_log",
+ "auth.delete_user",
+ "documents.add_log",
+ "documents.change_savedview",
+ "django_q.view_schedule",
+ "documents.change_document",
+ "django_celery_results.change_chordcounter",
+ "documents.add_document",
+ "sessions.delete_session",
+ "django_q.change_failure",
+ "django_celery_results.view_taskresult",
+ "contenttypes.add_contenttype",
+ "django_q.delete_success",
+ "documents.delete_comment",
+ "django_q.add_failure",
+ "sessions.view_session",
+ "contenttypes.view_contenttype",
+ "documents.delete_taskattributes",
+ "documents.delete_document",
+ "documents.delete_log",
+ "django_q.add_task",
+ "django_celery_results.change_groupresult",
+ "auth.add_group"
+ ]
+ }
+ ]
+}
diff --git a/src-ui/cypress/support/e2e.ts b/src-ui/cypress/support/e2e.ts
index 1d17409c2..1a8ef1710 100644
--- a/src-ui/cypress/support/e2e.ts
+++ b/src-ui/cypress/support/e2e.ts
@@ -5,6 +5,14 @@ beforeEach(() => {
fixture: 'ui_settings/settings.json',
}).as('ui-settings')
+ cy.intercept('http://localhost:8000/api/users/*', {
+ fixture: 'users/users.json',
+ })
+
+ cy.intercept('http://localhost:8000/api/groups/*', {
+ fixture: 'groups/groups.json',
+ })
+
cy.intercept('http://localhost:8000/api/remote_version/', {
fixture: 'remote_version/remote_version.json',
})
diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf
index c02ec7738..62f1443a9 100644
--- a/src-ui/messages.xlf
+++ b/src-ui/messages.xlf
@@ -254,60 +254,68 @@
Document added
src/app/app.component.ts
- 78
+ 90
+
+
+ src/app/app.component.ts
+ 100
Document was added to paperless.
src/app/app.component.ts
- 80
+ 92
+
+
+ src/app/app.component.ts
+ 102
Open document
src/app/app.component.ts
- 81
+ 93
src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html
- 45
+ 46
Could not add :
src/app/app.component.ts
- 97
+ 116
New document detected
src/app/app.component.ts
- 112
+ 131
Document is being processed by paperless.
src/app/app.component.ts
- 114
+ 133
Prev
src/app/app.component.ts
- 119
+ 138
Next
src/app/app.component.ts
- 120
+ 139
src/app/components/document-detail/document-detail.component.html
@@ -318,91 +326,91 @@
End
src/app/app.component.ts
- 121
+ 140
The dashboard can be used to show saved views, such as an 'Inbox'. Those settings are found under Settings > Saved Views once you have created some.
src/app/app.component.ts
- 126
+ 145
Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.
src/app/app.component.ts
- 136
+ 155
The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.
src/app/app.component.ts
- 145
+ 164
The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.
src/app/app.component.ts
- 157
+ 176
Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.
src/app/app.component.ts
- 167
+ 186
Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.
src/app/app.component.ts
- 176
+ 195
File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.
src/app/app.component.ts
- 185
+ 204
Check out the settings for various tweaks to the web app, toggle settings for saved views or setup e-mail checking.
src/app/app.component.ts
- 194
+ 213
Thank you! 🙏
src/app/app.component.ts
- 203
+ 222
There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues.
src/app/app.component.ts
- 205
+ 224
Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!
src/app/app.component.ts
- 207
+ 226
Initiating upload...
src/app/app.component.ts
- 256
+ 281
@@ -435,11 +443,11 @@
src/app/components/app-frame/app-frame.component.html
- 171
+ 174
src/app/components/app-frame/app-frame.component.html
- 174
+ 177
src/app/components/manage/settings/settings.component.html
@@ -484,7 +492,7 @@
src/app/components/document-list/document-list.component.ts
- 88
+ 94
src/app/components/manage/management-list/management-list.component.html
@@ -518,47 +526,47 @@
Open documents
src/app/components/app-frame/app-frame.component.html
- 99
+ 101
Close all
src/app/components/app-frame/app-frame.component.html
- 115
+ 117
src/app/components/app-frame/app-frame.component.html
- 118
+ 120
Manage
src/app/components/app-frame/app-frame.component.html
- 124
+ 127
Correspondents
src/app/components/app-frame/app-frame.component.html
- 128
+ 131
src/app/components/app-frame/app-frame.component.html
- 131
+ 134
Tags
src/app/components/app-frame/app-frame.component.html
- 135
+ 138
src/app/components/app-frame/app-frame.component.html
- 138
+ 141
src/app/components/common/input/tags/tags.component.html
@@ -577,29 +585,29 @@
Document types
src/app/components/app-frame/app-frame.component.html
- 142
+ 145
src/app/components/app-frame/app-frame.component.html
- 145
+ 148
Storage paths
src/app/components/app-frame/app-frame.component.html
- 149
+ 152
src/app/components/app-frame/app-frame.component.html
- 152
+ 155
File Tasks
src/app/components/app-frame/app-frame.component.html
- 156
+ 159
src/app/components/manage/tasks/tasks.component.html
@@ -610,18 +618,18 @@
File Tasks
src/app/components/app-frame/app-frame.component.html
- 160
+ 163
Logs
src/app/components/app-frame/app-frame.component.html
- 164
+ 167
src/app/components/app-frame/app-frame.component.html
- 167
+ 170
src/app/components/manage/logs/logs.component.html
@@ -632,7 +640,7 @@
Info
src/app/components/app-frame/app-frame.component.html
- 180
+ 183
src/app/components/manage/tasks/tasks.component.html
@@ -643,86 +651,86 @@
Documentation
src/app/components/app-frame/app-frame.component.html
- 184
+ 187
src/app/components/app-frame/app-frame.component.html
- 187
+ 190
GitHub
src/app/components/app-frame/app-frame.component.html
- 192
+ 195
src/app/components/app-frame/app-frame.component.html
- 195
+ 198
Suggest an idea
src/app/components/app-frame/app-frame.component.html
- 197
+ 200
src/app/components/app-frame/app-frame.component.html
- 201
+ 204
is available.
src/app/components/app-frame/app-frame.component.html
- 210
+ 213
Click to view.
src/app/components/app-frame/app-frame.component.html
- 210
+ 213
Paperless-ngx can automatically check for updates
src/app/components/app-frame/app-frame.component.html
- 214
+ 217
How does this work?
src/app/components/app-frame/app-frame.component.html
- 221,223
+ 224,226
Update available
src/app/components/app-frame/app-frame.component.html
- 232
+ 235
An error occurred while saving settings.
src/app/components/app-frame/app-frame.component.ts
- 83
+ 89
src/app/components/manage/settings/settings.component.ts
- 500
+ 574
An error occurred while saving update checking settings.
src/app/components/app-frame/app-frame.component.ts
- 216
+ 222
@@ -761,20 +769,24 @@
32
- src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 279
+ src/app/components/common/permissions-dialog/permissions-dialog.component.html
+ 17
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 319
+ 307
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 357
+ 347
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 395
+ 385
+
+
+ src/app/components/document-list/bulk-editor/bulk-editor.component.ts
+ 423
@@ -823,11 +835,15 @@
Name
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 8
+ 9
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
- 9
+ 10
+
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html
+ 10
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html
@@ -887,11 +903,19 @@
src/app/components/manage/settings/settings.component.html
- 256
+ 257
src/app/components/manage/settings/settings.component.html
- 291
+ 294
+
+
+ src/app/components/manage/settings/settings.component.html
+ 345
+
+
+ src/app/components/manage/settings/settings.component.html
+ 379
src/app/components/manage/tasks/tasks.component.html
@@ -902,11 +926,11 @@
Matching algorithm
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 9
+ 10
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
- 10
+ 11
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
@@ -921,11 +945,11 @@
Matching pattern
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 10
+ 11
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
- 11
+ 12
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
@@ -940,11 +964,11 @@
Case insensitive
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 11
+ 12
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
- 12
+ 13
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
@@ -959,10 +983,14 @@
Cancel
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 14
+ 20
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
+ 22
+
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html
16
@@ -975,11 +1003,19 @@
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
- 21
+ 25
src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html
- 18
+ 23
+
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 35
+
+
+ src/app/components/common/permissions-dialog/permissions-dialog.component.html
+ 16
src/app/components/common/select-dialog/select-dialog.component.html
@@ -998,10 +1034,14 @@
Save
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html
- 15
+ 21
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html
+ 23
+
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html
17
@@ -1014,15 +1054,19 @@
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
- 22
+ 26
src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html
- 19
+ 24
+
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 36
src/app/components/document-detail/document-detail.component.html
- 185
+ 196
src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html
@@ -1030,56 +1074,93 @@
src/app/components/manage/settings/settings.component.html
- 325
+ 415
Create new correspondent
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts
- 20
+ 25
Edit correspondent
src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts
- 24
+ 29
Create new document type
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts
- 20
+ 25
Edit document type
src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts
- 24
+ 29
Create new item
src/app/components/common/edit-dialog/edit-dialog.component.ts
- 49
+ 67
Edit item
src/app/components/common/edit-dialog/edit-dialog.component.ts
- 53
+ 71
Could not save element:
src/app/components/common/edit-dialog/edit-dialog.component.ts
- 57
+ 75
+
+
+
+ Permissions
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html
+ 11
+
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 30
+
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 2
+
+
+ src/app/components/document-detail/document-detail.component.html
+ 182
+
+
+ src/app/components/document-list/bulk-editor/bulk-editor.component.html
+ 77
+
+
+
+ Create new user group
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts
+ 24
+
+
+
+ Edit user group
+
+ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts
+ 28
@@ -1109,6 +1190,14 @@
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html
16
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 10
+
+
+ src/app/components/manage/settings/settings.component.html
+ 344
+
Password
@@ -1116,6 +1205,10 @@
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html
17
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 12
+
Character Set
@@ -1128,35 +1221,35 @@
No encryption
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts
- 12
+ 13
SSL
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts
- 13
+ 14
STARTTLS
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts
- 14
+ 15
Create new mail account
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts
- 28
+ 33
Edit mail account
src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts
- 32
+ 37
@@ -1167,7 +1260,7 @@
src/app/components/manage/settings/settings.component.html
- 292
+ 295
@@ -1325,39 +1418,43 @@
Only process attachments
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 25
+ 26
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 36
+ 37
Process all files, including 'inline' attachments
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 29
+ 30
Process message as .eml
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 40
+ 41
Process message as .eml and attachments separately
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 44
+ 45
Delete
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 51
+ 52
+
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 9
src/app/components/document-detail/document-detail.component.html
@@ -1365,7 +1462,7 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 126
+ 137
src/app/components/manage/management-list/management-list.component.html
@@ -1401,7 +1498,7 @@
src/app/components/manage/management-list/management-list.component.ts
- 181
+ 192
src/app/components/manage/settings/settings.component.html
@@ -1409,95 +1506,103 @@
src/app/components/manage/settings/settings.component.html
- 269
+ 270
src/app/components/manage/settings/settings.component.html
- 304
+ 307
+
+
+ src/app/components/manage/settings/settings.component.html
+ 359
+
+
+ src/app/components/manage/settings/settings.component.html
+ 394
Move to specified folder
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 55
+ 56
Mark as read, don't process read mails
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 59
+ 60
Flag the mail, don't process flagged mails
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 63
+ 64
Tag the mail with specified tag, don't process tagged mails
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 67
+ 68
Use subject as title
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 74
+ 75
Use attachment filename as title
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 78
+ 79
Do not assign a correspondent
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 85
+ 86
Use mail address
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 89
+ 90
Use name (or mail address if not available)
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 93
+ 94
Use correspondent selected below
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 97
+ 98
Create new mail rule
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 137
+ 139
Edit mail rule
src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts
- 141
+ 143
@@ -1515,42 +1620,42 @@
src/app/components/manage/storage-path-list/storage-path-list.component.ts
- 35
+ 42
e.g.
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts
- 21
+ 26
or use slashes to add directories e.g.
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts
- 23
+ 28
See <a target="_blank" href="https://docs.paperless-ngx.com/advanced_usage/#file-name-handling">documentation</a> for full list.
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts
- 25
+ 30
Create new storage path
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts
- 30
+ 35
Edit storage path
src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts
- 34
+ 39
@@ -1561,7 +1666,7 @@
src/app/components/manage/tag-list/tag-list.component.ts
- 35
+ 42
@@ -1582,14 +1687,85 @@
Create new tag
src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts
- 21
+ 26
Edit tag
src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts
- 25
+ 30
+
+
+
+ Email
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 11
+
+
+
+ First name
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 13
+
+
+
+ Last name
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 14
+
+
+
+ Active
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 19
+
+
+
+ Superuser
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 23
+
+
+
+ (Grants all permissions and can view objects)
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 23
+
+
+
+ Groups
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html
+ 27
+
+
+ src/app/components/manage/settings/settings.component.html
+ 346
+
+
+ src/app/components/manage/settings/settings.component.html
+ 367
+
+
+
+ Create new user account
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts
+ 41
+
+
+
+ Edit user account
+
+ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts
+ 45
@@ -1598,6 +1774,14 @@
src/app/components/common/filterable-dropdown/filterable-dropdown.component.html
16
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 6
+
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 17
+
src/app/components/document-list/bulk-editor/bulk-editor.component.html
20
@@ -1647,11 +1831,139 @@
src/app/components/common/input/select/select.component.html
- 30
+ 31
src/app/components/common/input/tags/tags.component.html
- 42
+ 43
+
+
+
+ Edit Permissions
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 7
+
+
+
+ Owner:
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 19
+
+
+
+ Objects without an owner can be viewed and edited by all users
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 25
+
+
+
+ View
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 27
+
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 10
+
+
+ src/app/components/document-list/document-card-large/document-card-large.component.html
+ 56
+
+
+
+ Users:
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 31
+
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 50
+
+
+
+ Groups:
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 39
+
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 58
+
+
+
+ Edit
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 46
+
+
+ src/app/components/document-list/document-card-large/document-card-large.component.html
+ 49
+
+
+ src/app/components/document-list/document-card-small/document-card-small.component.html
+ 70
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 45
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 45
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 45
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 45
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 59
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 59
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 59
+
+
+ src/app/components/manage/management-list/management-list.component.html
+ 59
+
+
+ src/app/components/manage/settings/settings.component.html
+ 269
+
+
+ src/app/components/manage/settings/settings.component.html
+ 306
+
+
+ src/app/components/manage/settings/settings.component.html
+ 358
+
+
+ src/app/components/manage/settings/settings.component.html
+ 393
+
+
+
+ Edit permissions also grant viewing permissions
+
+ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html
+ 64
@@ -1666,9 +1978,62 @@
Add tag
src/app/components/common/input/tags/tags.component.html
+ 12
+
+
+
+ Set Permissions
+
+ src/app/components/common/permissions-dialog/permissions-dialog.component.ts
+ 26
+
+
+
+ Note that permissions set here will override any existing permissions
+
+ src/app/components/common/permissions-dialog/permissions-dialog.component.ts
+ 41
+
+
+
+ Type
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 5
+
+
+
+ Add
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 7
+
+
+
+ Change
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 8
+
+
+
+
+
+ src/app/components/common/permissions-select/permissions-select.component.html
+ 22
+
+
+ src/app/components/manage/tasks/tasks.component.html
11
+
+ Inerhited from group
+
+ src/app/components/common/permissions-select/permissions-select.component.ts
+ 59
+
+
Select
@@ -1703,7 +2068,7 @@
src/app/components/document-list/document-list.component.html
- 93
+ 95
src/app/components/manage/settings/settings.component.html
@@ -1711,7 +2076,11 @@
src/app/components/manage/settings/settings.component.html
- 316
+ 320
+
+
+ src/app/components/manage/settings/settings.component.html
+ 406
src/app/components/manage/tasks/tasks.component.html
@@ -1726,14 +2095,14 @@
Hello , welcome to Paperless-ngx
src/app/components/dashboard/dashboard.component.ts
- 18
+ 21
Welcome to Paperless-ngx
src/app/components/dashboard/dashboard.component.ts
- 20
+ 23
@@ -1755,7 +2124,7 @@
src/app/components/document-list/document-list.component.html
- 157
+ 159
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -1782,7 +2151,7 @@
src/app/components/document-list/document-list.component.html
- 139
+ 141
src/app/components/document-list/filter-editor/filter-editor.component.ts
@@ -1855,32 +2224,32 @@
Processing:
src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts
- 36
+ 39
Failed:
src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts
- 39
+ 42
Added:
src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts
- 42
+ 45
,
src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts
- 45
+ 48
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 224
+ 252
this string is used to separate processing, failed and added on the file upload widget
@@ -1951,14 +2320,14 @@
Error saving comment:
src/app/components/document-comments/document-comments.component.ts
- 68
+ 71
Error deleting comment:
src/app/components/document-comments/document-comments.component.ts
- 83
+ 86
@@ -1987,7 +2356,7 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 90
+ 101
src/app/components/document-list/document-card-large/document-card-large.component.html
@@ -2013,7 +2382,7 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 77
+ 88
@@ -2074,11 +2443,11 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 38
+ 39
src/app/components/document-list/document-list.component.html
- 133
+ 135
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2097,11 +2466,11 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 47
+ 49
src/app/components/document-list/document-list.component.html
- 145
+ 147
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2120,11 +2489,11 @@
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 56
+ 59
src/app/components/document-list/document-list.component.html
- 151
+ 153
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2248,14 +2617,14 @@
src/app/components/document-detail/document-detail.component.html
- 203
+ 215
Comments
src/app/components/document-detail/document-detail.component.html
- 174
+ 175
src/app/components/manage/settings/settings.component.html
@@ -2266,120 +2635,136 @@
Discard
src/app/components/document-detail/document-detail.component.html
- 183
+ 194
Save & next
src/app/components/document-detail/document-detail.component.html
- 184
+ 195
Confirm delete
src/app/components/document-detail/document-detail.component.ts
- 453
+ 489
src/app/components/manage/management-list/management-list.component.ts
- 177
+ 188
Do you really want to delete document ""?
src/app/components/document-detail/document-detail.component.ts
- 454
+ 490
The files for this document will be deleted permanently. This operation cannot be undone.
src/app/components/document-detail/document-detail.component.ts
- 455
+ 491
Delete document
src/app/components/document-detail/document-detail.component.ts
- 457
+ 493
Error deleting document:
src/app/components/document-detail/document-detail.component.ts
- 473
+ 509
Redo OCR confirm
src/app/components/document-detail/document-detail.component.ts
- 493
+ 529
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 454
+ 482
This operation will permanently redo OCR for this document.
src/app/components/document-detail/document-detail.component.ts
- 494
+ 530
This operation cannot be undone.
src/app/components/document-detail/document-detail.component.ts
- 495
+ 531
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 417
+ 445
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 456
+ 484
src/app/components/manage/settings/settings.component.ts
- 584
+ 657
src/app/components/manage/settings/settings.component.ts
- 643
+ 711
+
+
+ src/app/components/manage/settings/settings.component.ts
+ 772
+
+
+ src/app/components/manage/settings/settings.component.ts
+ 831
Proceed
src/app/components/document-detail/document-detail.component.ts
- 497
+ 533
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 458
+ 486
src/app/components/manage/settings/settings.component.ts
- 586
+ 659
src/app/components/manage/settings/settings.component.ts
- 645
+ 713
+
+
+ src/app/components/manage/settings/settings.component.ts
+ 774
+
+
+ src/app/components/manage/settings/settings.component.ts
+ 833
Redo OCR operation will begin in the background. Close and re-open or reload this document after the operation has completed to see new content.
src/app/components/document-detail/document-detail.component.ts
- 505
+ 541
@@ -2388,7 +2773,7 @@
)"/>
src/app/components/document-detail/document-detail.component.ts
- 516,518
+ 552,554
@@ -2420,7 +2805,7 @@
Filter correspondents
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 39
+ 40
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2431,7 +2816,7 @@
Filter document types
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 48
+ 50
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2442,7 +2827,7 @@
Filter storage paths
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 57
+ 60
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2453,7 +2838,7 @@
Actions
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 74
+ 85
src/app/components/manage/management-list/management-list.component.html
@@ -2477,11 +2862,19 @@
src/app/components/manage/settings/settings.component.html
- 258
+ 259
src/app/components/manage/settings/settings.component.html
- 293
+ 296
+
+
+ src/app/components/manage/settings/settings.component.html
+ 347
+
+
+ src/app/components/manage/settings/settings.component.html
+ 382
src/app/components/manage/tasks/tasks.component.html
@@ -2492,28 +2885,28 @@
Include:
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 96
+ 107
Archived files
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 100,102
+ 111,113
Original files
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 106,108
+ 117,119
Use formatted filename
src/app/components/document-list/bulk-editor/bulk-editor.component.html
- 113,115
+ 124,126
@@ -2522,25 +2915,25 @@
)"/>
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 144,146
+ 172,174
""
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 216
+ 244
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 222
+ 250
"" and ""
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 218
+ 246
This is for messages like 'modify "tag1" and "tag2"'
@@ -2548,7 +2941,7 @@
and ""
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 226,228
+ 254,256
this is for messages like 'modify "tag1", "tag2" and "tag3"'
@@ -2556,14 +2949,14 @@
Confirm tags assignment
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 243
+ 271
This operation will add the tag "" to selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 249
+ 277
@@ -2572,14 +2965,14 @@
)"/> to selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 254,256
+ 282,284
This operation will remove the tag "" from selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 262
+ 290
@@ -2588,7 +2981,7 @@
)"/> from selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 267,269
+ 295,297
@@ -2599,98 +2992,98 @@
)"/> on selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 271,275
+ 299,303
Confirm correspondent assignment
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 312
+ 340
This operation will assign the correspondent "" to selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 314
+ 342
This operation will remove the correspondent from selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 316
+ 344
Confirm document type assignment
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 350
+ 378
This operation will assign the document type "" to selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 352
+ 380
This operation will remove the document type from selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 354
+ 382
Confirm storage path assignment
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 388
+ 416
This operation will assign the storage path "" to selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 390
+ 418
This operation will remove the storage path from selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 392
+ 420
Delete confirm
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 415
+ 443
This operation will permanently delete selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 416
+ 444
Delete document(s)
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 419
+ 447
This operation will permanently redo OCR for selected document(s).
src/app/components/document-list/bulk-editor/bulk-editor.component.ts
- 455
+ 483
@@ -2701,7 +3094,7 @@
src/app/components/document-list/document-list.component.html
- 178
+ 180
@@ -2712,65 +3105,7 @@
src/app/components/document-list/document-list.component.html
- 183
-
-
-
- Edit
-
- src/app/components/document-list/document-card-large/document-card-large.component.html
- 49
-
-
- src/app/components/document-list/document-card-small/document-card-small.component.html
- 70
-
-
- src/app/components/manage/management-list/management-list.component.html
- 45
-
-
- src/app/components/manage/management-list/management-list.component.html
- 45
-
-
- src/app/components/manage/management-list/management-list.component.html
- 45
-
-
- src/app/components/manage/management-list/management-list.component.html
- 45
-
-
- src/app/components/manage/management-list/management-list.component.html
- 59
-
-
- src/app/components/manage/management-list/management-list.component.html
- 59
-
-
- src/app/components/manage/management-list/management-list.component.html
- 59
-
-
- src/app/components/manage/management-list/management-list.component.html
- 59
-
-
- src/app/components/manage/settings/settings.component.html
- 268
-
-
- src/app/components/manage/settings/settings.component.html
- 303
-
-
-
- View
-
- src/app/components/document-list/document-card-large/document-card-large.component.html
- 56
+ 185
@@ -2781,7 +3116,7 @@
src/app/components/document-list/document-list.component.html
- 187
+ 189
@@ -2792,7 +3127,7 @@
src/app/components/document-list/document-list.component.html
- 192
+ 194
@@ -2906,49 +3241,49 @@
Save ""
src/app/components/document-list/document-list.component.html
- 75
+ 76
Save as...
src/app/components/document-list/document-list.component.html
- 76
+ 78
{VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}}
src/app/components/document-list/document-list.component.html
- 95
+ 97
{VAR_PLURAL, plural, =1 {One document} other { documents}}
src/app/components/document-list/document-list.component.html
- 97
+ 99
(filtered)
src/app/components/document-list/document-list.component.html
- 97
+ 99
Error while loading documents
src/app/components/document-list/document-list.component.html
- 110
+ 112
ASN
src/app/components/document-list/document-list.component.html
- 128,127
+ 130,129
src/app/components/document-list/filter-editor/filter-editor.component.ts
@@ -2963,7 +3298,7 @@
Added
src/app/components/document-list/document-list.component.html
- 163
+ 165
src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -2978,21 +3313,21 @@
Edit document
src/app/components/document-list/document-list.component.html
- 182
+ 184
View "" saved successfully.
src/app/components/document-list/document-list.component.ts
- 196
+ 202
View "" created successfully.
src/app/components/document-list/document-list.component.ts
- 237
+ 243
@@ -3161,49 +3496,49 @@
correspondent
src/app/components/manage/correspondent-list/correspondent-list.component.ts
- 33
+ 39
correspondents
src/app/components/manage/correspondent-list/correspondent-list.component.ts
- 34
+ 40
Last used
src/app/components/manage/correspondent-list/correspondent-list.component.ts
- 38
+ 45
Do you really want to delete the correspondent ""?
src/app/components/manage/correspondent-list/correspondent-list.component.ts
- 48
+ 55
document type
src/app/components/manage/document-type-list/document-type-list.component.ts
- 30
+ 36
document types
src/app/components/manage/document-type-list/document-type-list.component.ts
- 31
+ 37
Do you really want to delete the document type ""?
src/app/components/manage/document-type-list/document-type-list.component.ts
- 37
+ 44
@@ -3324,7 +3659,7 @@
Automatic
src/app/components/manage/management-list/management-list.component.ts
- 87
+ 98
src/app/data/matching-model.ts
@@ -3335,42 +3670,42 @@
Successfully created .
src/app/components/manage/management-list/management-list.component.ts
- 127
+ 138
Error occurred while creating : .
src/app/components/manage/management-list/management-list.component.ts
- 132,134
+ 143,145
Successfully updated .
src/app/components/manage/management-list/management-list.component.ts
- 150
+ 161
Error occurred while saving : .
src/app/components/manage/management-list/management-list.component.ts
- 155,157
+ 166,168
Do you really want to delete the ?
src/app/components/manage/management-list/management-list.component.ts
- 164
+ 175
Associated documents will not be deleted.
src/app/components/manage/management-list/management-list.component.ts
- 179
+ 190
@@ -3379,7 +3714,7 @@
)"/>
src/app/components/manage/management-list/management-list.component.ts
- 192,194
+ 203,205
@@ -3694,98 +4029,126 @@
Mail accounts
src/app/components/manage/settings/settings.component.html
- 244
+ 245
Add Account
src/app/components/manage/settings/settings.component.html
- 249
+ 250
Server
src/app/components/manage/settings/settings.component.html
- 257
+ 258
No mail accounts defined.
src/app/components/manage/settings/settings.component.html
- 275
+ 276
Mail rules
src/app/components/manage/settings/settings.component.html
- 279
+ 282
Add Rule
src/app/components/manage/settings/settings.component.html
- 284
+ 287
No mail rules defined.
src/app/components/manage/settings/settings.component.html
- 310
+ 313
+
+
+
+ Users & Groups
+
+ src/app/components/manage/settings/settings.component.html
+ 327
+
+
+
+ Users
+
+ src/app/components/manage/settings/settings.component.html
+ 332
+
+
+
+ Add User
+
+ src/app/components/manage/settings/settings.component.html
+ 337
+
+
+
+ Add Group
+
+ src/app/components/manage/settings/settings.component.html
+ 372
Saved view "" deleted.
src/app/components/manage/settings/settings.component.ts
- 387
+ 461
Settings saved
src/app/components/manage/settings/settings.component.ts
- 484
+ 558
Settings were saved successfully.
src/app/components/manage/settings/settings.component.ts
- 485
+ 559
Settings were saved successfully. Reload is required to apply some changes.
src/app/components/manage/settings/settings.component.ts
- 489
+ 563
Reload now
src/app/components/manage/settings/settings.component.ts
- 490
+ 564
Use system language
src/app/components/manage/settings/settings.component.ts
- 508
+ 582
Use date format of display language
src/app/components/manage/settings/settings.component.ts
- 515
+ 589
@@ -3794,133 +4157,217 @@
)"/>
src/app/components/manage/settings/settings.component.ts
- 535,537
+ 609,611
+
+
+
+ Saved user "".
+
+ src/app/components/manage/settings/settings.component.ts
+ 636
+
+
+
+ Error saving user: .
+
+ src/app/components/manage/settings/settings.component.ts
+ 645
+
+
+
+ Confirm delete user account
+
+ src/app/components/manage/settings/settings.component.ts
+ 655
+
+
+
+ This operation will permanently this user account.
+
+ src/app/components/manage/settings/settings.component.ts
+ 656
+
+
+
+ Deleted user
+
+ src/app/components/manage/settings/settings.component.ts
+ 665
+
+
+
+ Error deleting user: .
+
+ src/app/components/manage/settings/settings.component.ts
+ 673
+
+
+
+ Saved group "".
+
+ src/app/components/manage/settings/settings.component.ts
+ 691
+
+
+
+ Error saving group: .
+
+ src/app/components/manage/settings/settings.component.ts
+ 699
+
+
+
+ Confirm delete user group
+
+ src/app/components/manage/settings/settings.component.ts
+ 709
+
+
+
+ This operation will permanently this user group.
+
+ src/app/components/manage/settings/settings.component.ts
+ 710
+
+
+
+ Deleted group
+
+ src/app/components/manage/settings/settings.component.ts
+ 719
+
+
+
+ Error deleting group: .
+
+ src/app/components/manage/settings/settings.component.ts
+ 727
Saved account "".
src/app/components/manage/settings/settings.component.ts
- 562
+ 750
Error saving account: .
src/app/components/manage/settings/settings.component.ts
- 572
+ 760
Confirm delete mail account
src/app/components/manage/settings/settings.component.ts
- 582
+ 770
This operation will permanently delete this mail account.
src/app/components/manage/settings/settings.component.ts
- 583
+ 771
Deleted mail account
src/app/components/manage/settings/settings.component.ts
- 592
+ 780
Error deleting mail account: .
src/app/components/manage/settings/settings.component.ts
- 601
+ 789
Saved rule "".
src/app/components/manage/settings/settings.component.ts
- 620
+ 808
Error saving rule: .
src/app/components/manage/settings/settings.component.ts
- 631
+ 819
Confirm delete mail rule
src/app/components/manage/settings/settings.component.ts
- 641
+ 829
This operation will permanently delete this mail rule.
src/app/components/manage/settings/settings.component.ts
- 642
+ 830
Deleted mail rule
src/app/components/manage/settings/settings.component.ts
- 651
+ 839
Error deleting mail rule: .
src/app/components/manage/settings/settings.component.ts
- 660
+ 848
storage path
src/app/components/manage/storage-path-list/storage-path-list.component.ts
- 30
+ 36
storage paths
src/app/components/manage/storage-path-list/storage-path-list.component.ts
- 31
+ 37
Do you really want to delete the storage path ""?
src/app/components/manage/storage-path-list/storage-path-list.component.ts
- 45
+ 52
tag
src/app/components/manage/tag-list/tag-list.component.ts
- 30
+ 36
tags
src/app/components/manage/tag-list/tag-list.component.ts
- 31
+ 37
Do you really want to delete the tag ""?
src/app/components/manage/tag-list/tag-list.component.ts
- 46
+ 53
@@ -3930,13 +4377,6 @@
6
-
-
-
- src/app/components/manage/tasks/tasks.component.html
- 11
-
-
Refresh
@@ -3966,74 +4406,74 @@
src/app/components/manage/tasks/tasks.component.ts
- 56
+ 62
Open Document
src/app/components/manage/tasks/tasks.component.html
- 86
+ 87
Failed
src/app/components/manage/tasks/tasks.component.html
- 103
+ 105
Complete
src/app/components/manage/tasks/tasks.component.html
- 109
+ 111
Started
src/app/components/manage/tasks/tasks.component.html
- 115
+ 117
Queued
src/app/components/manage/tasks/tasks.component.html
- 121
+ 123
Dismiss selected
src/app/components/manage/tasks/tasks.component.ts
- 22
+ 26
Dismiss all
src/app/components/manage/tasks/tasks.component.ts
- 23
+ 27
src/app/components/manage/tasks/tasks.component.ts
- 54
+ 60
Confirm Dismiss All
src/app/components/manage/tasks/tasks.component.ts
- 52
+ 58
tasks?
src/app/components/manage/tasks/tasks.component.ts
- 54
+ 60
@@ -4192,6 +4632,13 @@
42
+
+ You don't have permissions to do that
+
+ src/app/guards/permissions.guard.ts
+ 31
+
+
(no title)
@@ -4369,175 +4816,175 @@
English (US)
src/app/services/settings.service.ts
- 145
+ 162
Arabic
src/app/services/settings.service.ts
- 151
+ 168
Belarusian
src/app/services/settings.service.ts
- 157
+ 174
Czech
src/app/services/settings.service.ts
- 163
+ 180
Danish
src/app/services/settings.service.ts
- 169
+ 186
German
src/app/services/settings.service.ts
- 175
+ 192
English (GB)
src/app/services/settings.service.ts
- 181
+ 198
Spanish
src/app/services/settings.service.ts
- 187
+ 204
French
src/app/services/settings.service.ts
- 193
+ 210
Italian
src/app/services/settings.service.ts
- 199
+ 216
Luxembourgish
src/app/services/settings.service.ts
- 205
+ 222
Dutch
src/app/services/settings.service.ts
- 211
+ 228
Polish
src/app/services/settings.service.ts
- 217
+ 234
Portuguese (Brazil)
src/app/services/settings.service.ts
- 223
+ 240
Portuguese
src/app/services/settings.service.ts
- 229
+ 246
Romanian
src/app/services/settings.service.ts
- 235
+ 252
Russian
src/app/services/settings.service.ts
- 241
+ 258
Slovenian
src/app/services/settings.service.ts
- 247
+ 264
Serbian
src/app/services/settings.service.ts
- 253
+ 270
Swedish
src/app/services/settings.service.ts
- 259
+ 276
Turkish
src/app/services/settings.service.ts
- 265
+ 282
Chinese Simplified
src/app/services/settings.service.ts
- 271
+ 288
ISO 8601
src/app/services/settings.service.ts
- 288
+ 305
Successfully completed one-time migratration of settings to the database!
src/app/services/settings.service.ts
- 399
+ 416
Unable to migrate settings to the database, please try saving manually.
src/app/services/settings.service.ts
- 400
+ 417
@@ -4551,28 +4998,28 @@
Connecting...
src/app/services/upload-documents.service.ts
- 31
+ 34
Uploading...
src/app/services/upload-documents.service.ts
- 43
+ 46
Upload complete, waiting...
src/app/services/upload-documents.service.ts
- 46
+ 49
HTTP error:
src/app/services/upload-documents.service.ts
- 62
+ 65