Compare commits
6 Commits
dependabot
...
l10n_dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d7443f646 | ||
|
|
7a07f1e81d | ||
|
|
92524ae97a | ||
|
|
1c89f6da24 | ||
|
|
d1a3e3b859 | ||
|
|
79ae594d54 |
@@ -32,7 +32,7 @@ RUN set -eux \
|
||||
# Purpose: Installs s6-overlay and rootfs
|
||||
# Comments:
|
||||
# - Don't leave anything extra in here either
|
||||
FROM ghcr.io/astral-sh/uv:0.6.9-python3.12-bookworm-slim AS s6-overlay-base
|
||||
FROM ghcr.io/astral-sh/uv:0.6.5-python3.12-bookworm-slim AS s6-overlay-base
|
||||
|
||||
WORKDIR /usr/src/s6
|
||||
|
||||
|
||||
@@ -565,15 +565,19 @@ document.
|
||||
|
||||
### Managing encryption {#encryption}
|
||||
|
||||
Documents can be stored in Paperless using GnuPG encryption.
|
||||
|
||||
!!! warning
|
||||
|
||||
Encryption was removed in [paperless-ng 0.9](changelog.md#paperless-ng-090)
|
||||
because it did not really provide any additional security, the passphrase
|
||||
was stored in a configuration file on the same system as the documents.
|
||||
Furthermore, the entire text content of the documents is stored plain in
|
||||
the database, even if your documents are encrypted. Filenames are not
|
||||
encrypted as well. Finally, the web server provides transparent access to
|
||||
your encrypted documents.
|
||||
Encryption is deprecated since [paperless-ng 0.9](changelog.md#paperless-ng-090) and doesn't really
|
||||
provide any additional security, since you have to store the passphrase
|
||||
in a configuration file on the same system as the encrypted documents
|
||||
for paperless to work. Furthermore, the entire text content of the
|
||||
documents is stored plain in the database, even if your documents are
|
||||
encrypted. Filenames are not encrypted as well.
|
||||
|
||||
Also, the web server provides transparent access to your encrypted
|
||||
documents.
|
||||
|
||||
Consider running paperless on an encrypted filesystem instead, which
|
||||
will then at least provide security against physical hardware theft.
|
||||
|
||||
@@ -270,7 +270,7 @@ The following methods are supported:
|
||||
- `remove_tag`
|
||||
- Requires `parameters`: `{ "tag": TAG_ID }`
|
||||
- `modify_tags`
|
||||
- Requires `parameters`: `{ "add_tags": [LIST_OF_TAG_IDS] }` and `{ "remove_tags": [LIST_OF_TAG_IDS] }`
|
||||
- Requires `parameters`: `{ "add_tags": [LIST_OF_TAG_IDS] }` and / or `{ "remove_tags": [LIST_OF_TAG_IDS] }`
|
||||
- `delete`
|
||||
- No `parameters` required
|
||||
- `reprocess`
|
||||
|
||||
@@ -708,8 +708,7 @@ Paperless runs on Raspberry Pi. However, some things are rather slow on
|
||||
the Pi and configuring some options in paperless can help improve
|
||||
performance immensely:
|
||||
|
||||
- Stick with SQLite to save some resources. See [troubleshooting](troubleshooting.md#log-reports-creating-paperlesstask-failed)
|
||||
if you encounter issues with SQLite locking.
|
||||
- Stick with SQLite to save some resources.
|
||||
- If you do not need the filesystem-based consumer, consider disabling it
|
||||
entirely by setting [`PAPERLESS_CONSUMER_DISABLE`](configuration.md#PAPERLESS_CONSUMER_DISABLE) to `true`.
|
||||
- Consider setting [`PAPERLESS_OCR_PAGES`](configuration.md#PAPERLESS_OCR_PAGES) to 1, so that paperless will
|
||||
|
||||
@@ -292,9 +292,7 @@ many workers attempting to access the database simultaneously.
|
||||
Consider changing to the PostgreSQL database if you will be processing
|
||||
many documents at once often. Otherwise, try tweaking the
|
||||
[`PAPERLESS_DB_TIMEOUT`](configuration.md#PAPERLESS_DB_TIMEOUT) setting to allow more time for the database to
|
||||
unlock. Additionally, you can change your SQLite database to use ["Write-Ahead Logging"](https://sqlite.org/wal.html).
|
||||
These changes may have minor performance implications but can help
|
||||
prevent database locking issues.
|
||||
unlock. This may have minor performance implications.
|
||||
|
||||
## granian fails to start with "is not a valid port number"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "paperless-ngx"
|
||||
version = "2.15.0"
|
||||
version = "2.14.7"
|
||||
description = "A community-supported supercharged version of paperless: scan, index and archive all your physical documents"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
|
||||
@@ -156,72 +156,6 @@ describe(`Additional service tests for SavedViewService`, () => {
|
||||
httpTestingController.verify() // no reload
|
||||
})
|
||||
|
||||
it('should reload after create, delete, patch and patchMany', () => {
|
||||
const reloadSpy = jest.spyOn(service, 'reload')
|
||||
service
|
||||
.create({
|
||||
name: 'New Saved View',
|
||||
show_on_dashboard: true,
|
||||
show_in_sidebar: true,
|
||||
sort_field: 'name',
|
||||
sort_reverse: true,
|
||||
filter_rules: [],
|
||||
})
|
||||
.subscribe()
|
||||
httpTestingController
|
||||
.expectOne(`${environment.apiBaseUrl}${endpoint}/`)
|
||||
.flush({})
|
||||
expect(reloadSpy).toHaveBeenCalled()
|
||||
reloadSpy.mockClear()
|
||||
httpTestingController
|
||||
.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
|
||||
)
|
||||
.flush({
|
||||
results: saved_views,
|
||||
})
|
||||
service.delete(saved_views[0]).subscribe()
|
||||
httpTestingController
|
||||
.expectOne(`${environment.apiBaseUrl}${endpoint}/1/`)
|
||||
.flush({})
|
||||
expect(reloadSpy).toHaveBeenCalled()
|
||||
reloadSpy.mockClear()
|
||||
httpTestingController
|
||||
.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
|
||||
)
|
||||
.flush({
|
||||
results: saved_views,
|
||||
})
|
||||
service.patch(saved_views[0], true).subscribe()
|
||||
httpTestingController
|
||||
.expectOne(`${environment.apiBaseUrl}${endpoint}/1/`)
|
||||
.flush({})
|
||||
expect(reloadSpy).toHaveBeenCalled()
|
||||
httpTestingController
|
||||
.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
|
||||
)
|
||||
.flush({
|
||||
results: saved_views,
|
||||
})
|
||||
service.patchMany(saved_views).subscribe()
|
||||
saved_views.forEach((saved_view) => {
|
||||
const req = httpTestingController.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/${saved_view.id}/`
|
||||
)
|
||||
req.flush({})
|
||||
})
|
||||
expect(reloadSpy).toHaveBeenCalled()
|
||||
httpTestingController
|
||||
.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
|
||||
)
|
||||
.flush({
|
||||
results: saved_views,
|
||||
})
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
// Dont need to setup again
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ export const environment = {
|
||||
apiBaseUrl: document.baseURI + 'api/',
|
||||
apiVersion: '7',
|
||||
appTitle: 'Paperless-ngx',
|
||||
version: '2.15.0',
|
||||
version: '2.14.7',
|
||||
webSocketHost: window.location.host,
|
||||
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
|
||||
webSocketBaseUrl: base_url.pathname + 'ws/',
|
||||
|
||||
@@ -784,10 +784,10 @@ def run_workflows(
|
||||
field=field,
|
||||
document=document,
|
||||
).first()
|
||||
if instance and args[value_field_name] is not None:
|
||||
if instance:
|
||||
setattr(instance, value_field_name, args[value_field_name])
|
||||
instance.save()
|
||||
elif not instance:
|
||||
else:
|
||||
CustomFieldInstance.objects.create(
|
||||
**args,
|
||||
field=field,
|
||||
|
||||
@@ -211,7 +211,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
|
||||
def test_api_modify_tags_not_provided(self, m):
|
||||
"""
|
||||
GIVEN:
|
||||
- API data to modify tags is missing remove_tags field
|
||||
- API data to modify tags is missing modify_tags field
|
||||
WHEN:
|
||||
- API to edit tags is called
|
||||
THEN:
|
||||
|
||||
@@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-03-11 13:33-0700\n"
|
||||
"PO-Revision-Date: 2025-03-18 12:12\n"
|
||||
"PO-Revision-Date: 2025-03-26 12:12\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -1184,7 +1184,7 @@ msgstr "Ungültige Variable erkannt."
|
||||
|
||||
#: documents/templates/account/account_inactive.html:5
|
||||
msgid "Paperless-ngx account inactive"
|
||||
msgstr "Papierlos-ngx-Konto inaktiv"
|
||||
msgstr "Paperless-ngx Konto inaktiv"
|
||||
|
||||
#: documents/templates/account/account_inactive.html:9
|
||||
msgid "Account inactive."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-03-11 13:33-0700\n"
|
||||
"PO-Revision-Date: 2025-03-11 20:35\n"
|
||||
"PO-Revision-Date: 2025-03-24 12:13\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"Language: no_NO\n"
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
|
||||
#: documents/filters.py:827
|
||||
msgid "Custom field not found"
|
||||
msgstr ""
|
||||
msgstr "Egendefinert felt ble ikke funnet"
|
||||
|
||||
#: documents/models.py:36 documents/models.py:710
|
||||
msgid "owner"
|
||||
@@ -196,11 +196,11 @@ msgstr "Sjekksummen av det arkiverte dokumentet."
|
||||
|
||||
#: documents/models.py:205
|
||||
msgid "page count"
|
||||
msgstr ""
|
||||
msgstr "antall sider"
|
||||
|
||||
#: documents/models.py:212
|
||||
msgid "The number of pages of the document."
|
||||
msgstr ""
|
||||
msgstr "Antall sider i dokumentet."
|
||||
|
||||
#: documents/models.py:216 documents/models.py:630 documents/models.py:668
|
||||
#: documents/models.py:739 documents/models.py:797
|
||||
@@ -318,7 +318,7 @@ msgstr "ASN"
|
||||
|
||||
#: documents/models.py:395
|
||||
msgid "Pages"
|
||||
msgstr ""
|
||||
msgstr "Sider"
|
||||
|
||||
#: documents/models.py:401
|
||||
msgid "show on dashboard"
|
||||
@@ -526,7 +526,7 @@ msgstr "har ikke egendefinert felt"
|
||||
|
||||
#: documents/models.py:489
|
||||
msgid "custom fields query"
|
||||
msgstr ""
|
||||
msgstr "egendefinerte felt spørring"
|
||||
|
||||
#: documents/models.py:490
|
||||
msgid "created to"
|
||||
@@ -566,15 +566,15 @@ msgstr "filtrer regler"
|
||||
|
||||
#: documents/models.py:534
|
||||
msgid "Auto Task"
|
||||
msgstr ""
|
||||
msgstr "Automatisk oppgave"
|
||||
|
||||
#: documents/models.py:535
|
||||
msgid "Scheduled Task"
|
||||
msgstr ""
|
||||
msgstr "Planlagt oppgave"
|
||||
|
||||
#: documents/models.py:536
|
||||
msgid "Manual Task"
|
||||
msgstr ""
|
||||
msgstr "Manuell oppgave"
|
||||
|
||||
#: documents/models.py:539
|
||||
msgid "Consume File"
|
||||
@@ -590,7 +590,7 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:542
|
||||
msgid "Index Optimize"
|
||||
msgstr ""
|
||||
msgstr "index optimalisering"
|
||||
|
||||
#: documents/models.py:547
|
||||
msgid "Task ID"
|
||||
@@ -622,7 +622,7 @@ msgstr "Oppgavenavn"
|
||||
|
||||
#: documents/models.py:569
|
||||
msgid "Name of the task that was run"
|
||||
msgstr ""
|
||||
msgstr "Navn på oppgaven som ble kjørt"
|
||||
|
||||
#: documents/models.py:576
|
||||
msgid "Task State"
|
||||
@@ -666,11 +666,11 @@ msgstr "Dataene returnert av oppgaven"
|
||||
|
||||
#: documents/models.py:614
|
||||
msgid "Task Type"
|
||||
msgstr ""
|
||||
msgstr "Oppgave type"
|
||||
|
||||
#: documents/models.py:615
|
||||
msgid "The type of task that was run"
|
||||
msgstr ""
|
||||
msgstr "Type oppgave som ble utført"
|
||||
|
||||
#: documents/models.py:626
|
||||
msgid "Note for the document"
|
||||
@@ -722,7 +722,7 @@ msgstr "URL"
|
||||
|
||||
#: documents/models.py:730
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Dato"
|
||||
|
||||
#: documents/models.py:731
|
||||
msgid "Boolean"
|
||||
@@ -746,7 +746,7 @@ msgstr "Dokument lenke"
|
||||
|
||||
#: documents/models.py:736
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "Velg"
|
||||
|
||||
#: documents/models.py:748
|
||||
msgid "data type"
|
||||
@@ -790,7 +790,7 @@ msgstr "Dokument oppdatert"
|
||||
|
||||
#: documents/models.py:932
|
||||
msgid "Scheduled"
|
||||
msgstr ""
|
||||
msgstr "Planlagt"
|
||||
|
||||
#: documents/models.py:935
|
||||
msgid "Consume Folder"
|
||||
@@ -806,15 +806,15 @@ msgstr "Epost-henting"
|
||||
|
||||
#: documents/models.py:938
|
||||
msgid "Web UI"
|
||||
msgstr ""
|
||||
msgstr "Web UI"
|
||||
|
||||
#: documents/models.py:943
|
||||
msgid "Modified"
|
||||
msgstr ""
|
||||
msgstr "Endret"
|
||||
|
||||
#: documents/models.py:944
|
||||
msgid "Custom Field"
|
||||
msgstr ""
|
||||
msgstr "Egendefinerte felt"
|
||||
|
||||
#: documents/models.py:947
|
||||
msgid "Workflow Trigger Type"
|
||||
@@ -898,7 +898,7 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:1075
|
||||
msgid "email subject"
|
||||
msgstr ""
|
||||
msgstr "e-post emne"
|
||||
|
||||
#: documents/models.py:1079
|
||||
msgid "The subject of the email, can include some placeholders, see documentation."
|
||||
@@ -906,7 +906,7 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:1085
|
||||
msgid "email body"
|
||||
msgstr ""
|
||||
msgstr "epost innhold"
|
||||
|
||||
#: documents/models.py:1088
|
||||
msgid "The body (message) of the email, can include some placeholders, see documentation."
|
||||
|
||||
@@ -549,9 +549,6 @@ def _parse_remote_user_settings() -> str:
|
||||
|
||||
HTTP_REMOTE_USER_HEADER_NAME = _parse_remote_user_settings()
|
||||
|
||||
# X-Frame options for embedded PDF display:
|
||||
X_FRAME_OPTIONS = "SAMEORIGIN"
|
||||
|
||||
# The next 3 settings can also be set using just PAPERLESS_URL
|
||||
CSRF_TRUSTED_ORIGINS = __get_list("PAPERLESS_CSRF_TRUSTED_ORIGINS")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from typing import Final
|
||||
|
||||
__version__: Final[tuple[int, int, int]] = (2, 15, 0)
|
||||
__version__: Final[tuple[int, int, int]] = (2, 14, 7)
|
||||
# Version string like X.Y.Z
|
||||
__full_version_str__: Final[str] = ".".join(map(str, __version__))
|
||||
# Version string like X.Y
|
||||
|
||||
Reference in New Issue
Block a user