Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Jonas Winkler
2021-05-16 01:23:07 +02:00
76 changed files with 1487 additions and 537 deletions

View File

@@ -7,7 +7,7 @@ from dateutil.parser import isoparse
from django.conf import settings
from whoosh import highlight, classify, query
from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME, BOOLEAN
from whoosh.highlight import Formatter, get_text, HtmlFormatter
from whoosh.highlight import HtmlFormatter
from whoosh.index import create_in, exists_in, open_dir
from whoosh.qparser import MultifieldParser
from whoosh.qparser.dateparse import DateParserPlugin
@@ -147,12 +147,10 @@ def remove_document_from_index(document):
class DelayedQuery:
@property
def _query(self):
def _get_query(self):
raise NotImplementedError()
@property
def _query_filter(self):
def _get_query_filter(self):
criterias = []
for k, v in self.query_params.items():
if k == 'correspondent__id':
@@ -185,16 +183,32 @@ class DelayedQuery:
else:
return None
@property
def _query_sortedby(self):
# if not 'ordering' in self.query_params:
return None, False
def _get_query_sortedby(self):
if 'ordering' not in self.query_params:
return None, False
# o: str = self.query_params['ordering']
# if o.startswith('-'):
# return o[1:], True
# else:
# return o, False
field: str = self.query_params['ordering']
sort_fields_map = {
"created": "created",
"modified": "modified",
"added": "added",
"title": "title",
"correspondent__name": "correspondent",
"document_type__name": "type",
"archive_serial_number": "asn"
}
if field.startswith('-'):
field = field[1:]
reverse = True
else:
reverse = False
if field not in sort_fields_map:
return None, False
else:
return sort_fields_map[field], reverse
def __init__(self, searcher: Searcher, query_params, page_size):
self.searcher = searcher
@@ -211,13 +225,13 @@ class DelayedQuery:
if item.start in self.saved_results:
return self.saved_results[item.start]
q, mask = self._query
sortedby, reverse = self._query_sortedby
q, mask = self._get_query()
sortedby, reverse = self._get_query_sortedby()
page: ResultsPage = self.searcher.search_page(
q,
mask=mask,
filter=self._query_filter,
filter=self._get_query_filter(),
pagenum=math.floor(item.start / self.page_size) + 1,
pagelen=self.page_size,
sortedby=sortedby,
@@ -227,14 +241,18 @@ class DelayedQuery:
surround=50)
page.results.formatter = HtmlFormatter(tagname="span", between=" ... ")
if not self.first_score and len(page.results) > 0:
if (not self.first_score and
len(page.results) > 0 and
sortedby is None):
self.first_score = page.results[0].score
if self.first_score:
page.results.top_n = list(map(
lambda hit: (hit[0] / self.first_score, hit[1]),
page.results.top_n
))
page.results.top_n = list(map(
lambda hit: (
(hit[0] / self.first_score) if self.first_score else None,
hit[1]
),
page.results.top_n
))
self.saved_results[item.start] = page
@@ -243,8 +261,7 @@ class DelayedQuery:
class DelayedFullTextQuery(DelayedQuery):
@property
def _query(self):
def _get_query(self):
q_str = self.query_params['query']
qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"],
@@ -261,8 +278,7 @@ class DelayedFullTextQuery(DelayedQuery):
class DelayedMoreLikeThisQuery(DelayedQuery):
@property
def _query(self):
def _get_query(self):
more_like_doc_id = int(self.query_params['more_like_id'])
content = Document.objects.get(id=more_like_doc_id).content

View File

@@ -106,6 +106,12 @@ class Command(BaseCommand):
help="Specify the ID of a document, and this command will only "
"run on this specific document."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
@@ -140,7 +146,8 @@ class Command(BaseCommand):
handle_document,
document_ids
),
total=len(document_ids)
total=len(document_ids),
disable=options['no_progress_bar']
))
except KeyboardInterrupt:
print("Aborting...")

View File

@@ -57,6 +57,12 @@ class Command(BaseCommand):
"do not belong to the current export, such as files from "
"deleted documents."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def __init__(self, *args, **kwargs):
BaseCommand.__init__(self, *args, **kwargs)
@@ -81,9 +87,9 @@ class Command(BaseCommand):
raise CommandError("That path doesn't appear to be writable")
with FileLock(settings.MEDIA_LOCK):
self.dump()
self.dump(options['no_progress_bar'])
def dump(self):
def dump(self, progress_bar_disable=False):
# 1. Take a snapshot of what files exist in the current export folder
for root, dirs, files in os.walk(self.target):
self.files_in_export_dir.extend(
@@ -124,8 +130,11 @@ class Command(BaseCommand):
"json", User.objects.all()))
# 3. Export files from each document
for index, document_dict in tqdm.tqdm(enumerate(document_manifest),
total=len(document_manifest)):
for index, document_dict in tqdm.tqdm(
enumerate(document_manifest),
total=len(document_manifest),
disable=progress_bar_disable
):
# 3.1. store files unencrypted
document_dict["fields"]["storage_type"] = Document.STORAGE_TYPE_UNENCRYPTED # NOQA: E501

View File

@@ -36,6 +36,12 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("source")
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def __init__(self, *args, **kwargs):
BaseCommand.__init__(self, *args, **kwargs)
@@ -70,7 +76,7 @@ class Command(BaseCommand):
# Fill up the database with whatever is in the manifest
call_command("loaddata", manifest_path)
self._import_files_from_manifest()
self._import_files_from_manifest(options['no_progress_bar'])
print("Updating search index...")
call_command('document_index', 'reindex')
@@ -111,7 +117,7 @@ class Command(BaseCommand):
f"does not appear to be in the source directory."
)
def _import_files_from_manifest(self):
def _import_files_from_manifest(self, progress_bar_disable):
os.makedirs(settings.ORIGINALS_DIR, exist_ok=True)
os.makedirs(settings.THUMBNAIL_DIR, exist_ok=True)
@@ -123,7 +129,10 @@ class Command(BaseCommand):
lambda r: r["model"] == "documents.document",
self.manifest))
for record in tqdm.tqdm(manifest_documents):
for record in tqdm.tqdm(
manifest_documents,
disable=progress_bar_disable
):
document = Document.objects.get(pk=record["pk"])

View File

@@ -10,10 +10,16 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("command", choices=['reindex', 'optimize'])
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
with transaction.atomic():
if options['command'] == 'reindex':
index_reindex()
index_reindex(progress_bar_disable=options['no_progress_bar'])
elif options['command'] == 'optimize':
index_optimize()

View File

@@ -13,9 +13,20 @@ class Command(BaseCommand):
This will rename all documents to match the latest filename format.
""".replace(" ", "")
def add_arguments(self, parser):
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR
for document in tqdm.tqdm(Document.objects.all()):
for document in tqdm.tqdm(
Document.objects.all(),
disable=options['no_progress_bar']
):
post_save.send(Document, instance=document)

View File

@@ -57,6 +57,12 @@ class Command(BaseCommand):
"set correspondent, document and remove correspondents, types"
"and tags that do not match anymore due to changed rules."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
@@ -68,7 +74,10 @@ class Command(BaseCommand):
classifier = load_classifier()
for document in tqdm.tqdm(documents):
for document in tqdm.tqdm(
documents,
disable=options['no_progress_bar']
):
if options['correspondent']:
set_correspondent(

View File

@@ -8,8 +8,16 @@ class Command(BaseCommand):
This command checks your document archive for issues.
""".replace(" ", "")
def add_arguments(self, parser):
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
messages = check_sanity(progress=True)
messages = check_sanity(progress=not options['no_progress_bar'])
messages.log_messages()

View File

@@ -47,6 +47,12 @@ class Command(BaseCommand):
help="Specify the ID of a document, and this command will only "
"run on this specific document."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR
@@ -65,5 +71,7 @@ class Command(BaseCommand):
with multiprocessing.Pool() as pool:
list(tqdm.tqdm(
pool.imap_unordered(_process_document, ids), total=len(ids)
pool.imap_unordered(_process_document, ids),
total=len(ids),
disable=options['no_progress_bar']
))

View File

@@ -60,12 +60,7 @@ def check_sanity(progress=False):
if lockfile in present_files:
present_files.remove(lockfile)
if progress:
docs = tqdm(Document.objects.all())
else:
docs = Document.objects.all()
for doc in docs:
for doc in tqdm(Document.objects.all(), disable=not progress):
# Check sanity of the thumbnail
if not os.path.isfile(doc.thumbnail_path):
messages.error(f"Thumbnail of document {doc.pk} does not exist.")

View File

@@ -42,3 +42,58 @@ body {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
@media (prefers-color-scheme: dark) {
/*
From theme_dark.scss
$primary-dark-mode: #45973a;
$danger-dark-mode: #b71631;
$bg-dark-mode: #161618;
$bg-dark-mode-accent: #21262d;
$bg-light-dark-mode: #1c1c1f;
$text-color-dark-mode: #abb2bf;
$border-color-dark-mode: #47494f;
*/
body {
background-color: #161618 !important;
color: #abb2bf;
}
svg.logo .text {
fill: #abb2bf!important;
}
.form-control:not(.is-invalid):not(.btn) {
border-color: #47494f;
}
.form-control:not(.btn) {
background-color: #161618;
color: #abb2bf;
}
.form-control:not(.btn)::placeholder {
color: #abb2bf;
}
.form-control:not(.btn):focus {
background-color: #1c1c1f !important;
color: #8e97a9 !important;
}
.btn-primary {
color: #fff;
background-color: #17541f;
border-color: #17541f;
}
.btn-primary:hover, .btn-primary:focus {
background-color: #0f3614;
border-color: #0c2c10;
}
.btn-primary:not(:disabled):not(.disabled):active {
background-color: #0c2c10;
border-color: #09220d;
}
}

View File

@@ -20,13 +20,13 @@ def index_optimize():
writer.commit(optimize=True)
def index_reindex():
def index_reindex(progress_bar_disable=False):
documents = Document.objects.all()
ix = index.open_index(recreate=True)
with AsyncWriter(ix) as writer:
for document in tqdm.tqdm(documents):
for document in tqdm.tqdm(documents, disable=progress_bar_disable):
index.update_document(writer, document)

View File

@@ -7,11 +7,12 @@
<head>
<meta charset="utf-8">
<title>Paperless-ng</title>
<base href="/">
<base href="{% url 'base' %}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="username" content="{{username}}">
<meta name="full_name" content="{{full_name}}">
<meta name="cookie_prefix" content="{{cookie_prefix}}">
<meta name="robots" content="noindex,nofollow">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="manifest" href="{% static webmanifest %}">
<link rel="stylesheet" href="{% static styles_css %}">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -471,6 +471,31 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
self.assertNotIn(d5.id, search_query("&added__date__lt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
self.assertIn(d5.id, search_query("&added__date__gt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
def test_search_sorting(self):
c1 = Correspondent.objects.create(name="corres Ax")
c2 = Correspondent.objects.create(name="corres Cx")
c3 = Correspondent.objects.create(name="corres Bx")
d1 = Document.objects.create(checksum="1", correspondent=c1, content="test", archive_serial_number=2, title="3")
d2 = Document.objects.create(checksum="2", correspondent=c2, content="test", archive_serial_number=3, title="2")
d3 = Document.objects.create(checksum="3", correspondent=c3, content="test", archive_serial_number=1, title="1")
with AsyncWriter(index.open_index()) as writer:
for doc in Document.objects.all():
index.update_document(writer, doc)
def search_query(q):
r = self.client.get("/api/documents/?query=test" + q)
self.assertEqual(r.status_code, 200)
return [hit['id'] for hit in r.data['results']]
self.assertListEqual(search_query("&ordering=archive_serial_number"), [d3.id, d1.id, d2.id])
self.assertListEqual(search_query("&ordering=-archive_serial_number"), [d2.id, d1.id, d3.id])
self.assertListEqual(search_query("&ordering=title"), [d3.id, d2.id, d1.id])
self.assertListEqual(search_query("&ordering=-title"), [d1.id, d2.id, d3.id])
self.assertListEqual(search_query("&ordering=correspondent__name"), [d1.id, d3.id, d2.id])
self.assertListEqual(search_query("&ordering=-correspondent__name"), [d2.id, d3.id, d1.id])
def test_statistics(self):
doc1 = Document.objects.create(title="none1", checksum="A")

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -412,54 +412,58 @@ msgstr "Heslo"
msgid "Sign in"
msgstr "Přihlásit se"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr ""
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Němčina"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francouzština"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Správa Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 19:51\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 23:04\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -412,54 +412,58 @@ msgstr "Kennwort"
msgid "Sign in"
msgstr "Anmelden"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Französisch"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng Administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-02 17:00\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 21:40\n"
"Last-Translator: \n"
"Language-Team: English, United Kingdom\n"
"Language: en_GB\n"
@@ -412,54 +412,58 @@ msgstr "Password"
msgid "Sign in"
msgstr "Sign in"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "English (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "English (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "German"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Dutch"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "French"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portuguese (Brazil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portuguese"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italian"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romanian"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russian"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanish"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polish"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Swedish"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -412,54 +412,58 @@ msgstr "Contraseña"
msgid "Sign in"
msgstr "Iniciar sesión"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Alemán"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francés"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Ruso"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Español"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng Administración"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 13:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 15:10\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -412,54 +412,58 @@ msgstr "Mot de passe"
msgid "Sign in"
msgstr "S'identifier"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Allemand"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Français"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italien"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russe"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polonais"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Suédois"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administration de Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -412,54 +412,58 @@ msgstr ""
msgid "Sign in"
msgstr ""
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Angol (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Német"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr ""
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr ""
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 18:50\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 08:19\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -412,54 +412,58 @@ msgstr "Password"
msgid "Sign in"
msgstr "Accedi"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglese (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglese (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Tedesco"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Olandese"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francese"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portoghese (Brasile)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portoghese"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spagnolo"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polacco"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Svedese"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Amministrazione di Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-18 13:19\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-06 00:07\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -412,54 +412,58 @@ msgstr "Wachtwoord"
msgid "Sign in"
msgstr "Aanmelden"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Duits"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Frans"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brazilië)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Pools"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Zweeds"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administratie"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 14:46\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -412,54 +412,58 @@ msgstr "Hasło"
msgid "Sign in"
msgstr "Zaloguj się"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Angielski (USA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Angielski (Wielka Brytania)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Niemiecki"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holenderski"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazylia)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Włoski"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumuński"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Rosyjski"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Hiszpański"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polski"
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administracja Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -412,54 +412,58 @@ msgstr "Senha"
msgid "Sign in"
msgstr "Entrar"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Alemão"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holandês"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francês"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 21:56\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 18:07\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -412,54 +412,58 @@ msgstr "Palavra-passe"
msgid "Sign in"
msgstr "Iniciar sessão"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "English (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Nederlandse"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Français"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Sueco"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-04 02:27\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 23:04\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@@ -412,53 +412,57 @@ msgstr "Parolă"
msgid "Sign in"
msgstr "Conectare"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Germană"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Olandeză"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Franceză"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugheză"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiană"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Română"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Rusă"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
msgstr "Poloneză"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Suedeză"
#: paperless/urls.py:113
msgid "Paperless-ng administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -412,54 +412,58 @@ msgstr "Пароль"
msgid "Sign in"
msgstr "Вход"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Английский (США)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Английский (Великобритании)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Немецкий"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Датский"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Французский"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portuguese (Brazil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Португальский"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italian"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romanian"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Русский"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Испанский"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Администрирование Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-04 13:14\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-10 13:35\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -412,54 +412,58 @@ msgstr "Lösenord"
msgid "Sign in"
msgstr "Logga in"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Tyska"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holländska"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Franska"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugisiska (Brasilien)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugisiska"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italienska"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumänska"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Ryska"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanska"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polska"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Svenska"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:46\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Xhosa\n"
"Language: xh_ZA\n"
@@ -412,54 +412,58 @@ msgstr "crwdns2712:0crwdne2712:0"
msgid "Sign in"
msgstr "crwdns2714:0crwdne2714:0"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "crwdns2716:0crwdne2716:0"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "crwdns2718:0crwdne2718:0"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "crwdns2720:0crwdne2720:0"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "crwdns2722:0crwdne2722:0"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "crwdns2724:0crwdne2724:0"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "crwdns2726:0crwdne2726:0"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "crwdns3424:0crwdne3424:0"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "crwdns2728:0crwdne2728:0"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "crwdns2730:0crwdne2730:0"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "crwdns3414:0crwdne3414:0"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "crwdns3420:0crwdne3420:0"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "crwdns3444:0crwdne3444:0"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "crwdns3448:0crwdne3448:0"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "crwdns2732:0crwdne2732:0"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -412,54 +412,58 @@ msgstr ""
msgid "Sign in"
msgstr ""
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr ""
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr ""
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr ""
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr ""
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr ""

View File

@@ -142,11 +142,14 @@ MIDDLEWARE = [
ROOT_URLCONF = 'paperless.urls'
FORCE_SCRIPT_NAME = os.getenv("PAPERLESS_FORCE_SCRIPT_NAME")
BASE_URL = (FORCE_SCRIPT_NAME or "") + "/"
LOGIN_URL = BASE_URL + "accounts/login/"
WSGI_APPLICATION = 'paperless.wsgi.application'
ASGI_APPLICATION = "paperless.asgi.application"
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", "/static/")
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", BASE_URL + "static/")
WHITENOISE_STATIC_PREFIX = "/static/"
# TODO: what is this used for?
TEMPLATES = [

View File

@@ -9,6 +9,8 @@ from rest_framework.routers import DefaultRouter
from django.utils.translation import gettext_lazy as _
from django.conf import settings
from paperless.consumers import StatusConsumer
from documents.views import (
CorrespondentViewSet,
@@ -73,31 +75,36 @@ urlpatterns = [
re_path(r"^fetch/", include([
re_path(
r"^doc/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/download/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/download/'),
),
re_path(
r"^thumb/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/thumb/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/thumb/'),
),
re_path(
r"^preview/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/preview/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/preview/'),
),
])),
re_path(r"^push$", csrf_exempt(
RedirectView.as_view(url='/api/documents/post_document/'))),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/post_document/'))),
# Frontend assets TODO: this is pretty bad, but it works.
path('assets/<path:path>',
RedirectView.as_view(url='/static/frontend/en-US/assets/%(path)s')),
RedirectView.as_view(url=settings.STATIC_URL +
'frontend/en-US/assets/%(path)s')),
# TODO: with localization, this is even worse! :/
# login, logout
path('accounts/', include('django.contrib.auth.urls')),
# Root of the Frontent
re_path(r".*", login_required(IndexView.as_view())),
re_path(r".*", login_required(IndexView.as_view()), name='base'),
]

View File

@@ -1 +1 @@
__version__ = (1, 4, 2)
__version__ = (1, 4, 3)

11
src/paperless/workers.py Normal file
View File

@@ -0,0 +1,11 @@
import os
from uvicorn.workers import UvicornWorker
from django.conf import settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "paperless.settings")
class ConfigurableWorker(UvicornWorker):
CONFIG_KWARGS = {
"root_path": settings.FORCE_SCRIPT_NAME or "",
}

View File

@@ -121,7 +121,12 @@ class RasterisedDocumentParser(DocumentParser):
self.log("debug", f"Extracted text from PDF file {pdf_file}")
return stripped
except PDFException:
except Exception:
# TODO catch all for various issues with PDFminer.six.
# If PDFminer fails, fall back to OCR.
self.log("warn",
"Error while getting text from PDF document with "
"pdfminer.six", exc_info=True)
# probably not a PDF file.
return None