From f9263ddb624ffeb37c40ba71ecb6d07ad235644c Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 7 Mar 2021 13:16:23 +0100 Subject: [PATCH 01/93] some initial attempts to merge search and document list --- src/documents/index.py | 64 ++++++++++++++++++++++++++++++++++++++++++ src/documents/views.py | 40 ++++++++++++++++++++++++++ src/paperless/urls.py | 4 +-- 3 files changed, 106 insertions(+), 2 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index 89e56e930..2c851c9ea 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -2,6 +2,7 @@ import logging import os from contextlib import contextmanager +import math from django.conf import settings from whoosh import highlight, classify, query from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME @@ -9,8 +10,10 @@ from whoosh.highlight import Formatter, get_text from whoosh.index import create_in, exists_in, open_dir from whoosh.qparser import MultifieldParser from whoosh.qparser.dateparse import DateParserPlugin +from whoosh.searching import ResultsPage from whoosh.writing import AsyncWriter +from documents.models import Document logger = logging.getLogger("paperless.index") @@ -66,6 +69,7 @@ def get_schema(): title=TEXT(stored=True), content=TEXT(), correspondent=TEXT(stored=True), + correspondent_id=NUMERIC(stored=True, numtype=int), tag=KEYWORD(stored=True, commas=True, scorable=True, lowercase=True), type=TEXT(stored=True), created=DATETIME(stored=True, sortable=True), @@ -109,6 +113,7 @@ def update_document(writer, doc): title=doc.title, content=doc.content, correspondent=doc.correspondent.name if doc.correspondent else None, + correspondent_id=doc.correspondent.id if doc.correspondent else None, tag=tags if tags else None, type=doc.document_type.name if doc.document_type else None, created=doc.created, @@ -181,6 +186,65 @@ def query_page(ix, page, querystring, more_like_doc_id, more_like_doc_content): searcher.close() +class DelayedQuery: + + @property + def _query(self): + if 'query' in self.query_params: + qp = MultifieldParser( + ["content", "title", "correspondent", "tag", "type"], + self.ix.schema) + qp.add_plugin(DateParserPlugin()) + q = qp.parse(self.query_params['query']) + elif 'more_like_id' in self.query_params: + more_like_doc_id = int(self.query_params['more_like_id']) + content = Document.objects.get(id=more_like_doc_id).content + + docnum = self.searcher.document_number(id=more_like_doc_id) + kts = self.searcher.key_terms_from_text( + 'content', content, numterms=20, + model=classify.Bo1Model, normalize=False) + q = query.Or( + [query.Term('content', word, boost=weight) + for word, weight in kts]) + else: + raise ValueError( + "Either query or more_like_id is required." + ) + return q + + @property + def _query_filter(self): + criterias = [] + for k, v in self.query_params.items(): + if k == 'correspondent__id': + criterias.append(query.Term('correspondent_id', v)) + if len(criterias) > 0: + return query.And(criterias) + else: + return None + + def __init__(self, ix, searcher, query_params, page_size): + self.ix = ix + self.searcher = searcher + self.query_params = query_params + self.page_size = page_size + + def __len__(self): + results = self.searcher.search(self._query, limit=1, filter=self._query_filter) + return len(results) + #return 1000 + + def __getitem__(self, item): + page: ResultsPage = self.searcher.search_page( + self._query, + filter=self._query_filter, + pagenum=math.floor(item.start / self.page_size) + 1, + pagelen=self.page_size + ) + return page + + def autocomplete(ix, term, limit=10): with ix.reader() as reader: terms = [] diff --git a/src/documents/views.py b/src/documents/views.py index a3f495d50..209a277b8 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -35,6 +35,7 @@ from rest_framework.viewsets import ( from paperless.db import GnuPG from paperless.views import StandardPagination +from . import index from .bulk_download import OriginalAndArchiveStrategy, OriginalsOnlyStrategy, \ ArchiveOnlyStrategy from .classifier import load_classifier @@ -326,6 +327,45 @@ class DocumentViewSet(RetrieveModelMixin, raise Http404() +class SearchResultSerializer(DocumentSerializer): + + def to_representation(self, instance): + doc = Document.objects.get(id=instance['id']) + # repressentation = super(SearchResultSerializer, self).to_representation(doc) + # repressentation['__search_hit__'] = { + # "score": instance.score + # } + return super(SearchResultSerializer, self).to_representation(doc) + + +class UnifiedSearchViewSet(DocumentViewSet): + + def get_serializer_class(self): + if self._is_search_request(): + return SearchResultSerializer + else: + return DocumentSerializer + + def _is_search_request(self): + return "query" in self.request.query_params + + def filter_queryset(self, queryset): + + if self._is_search_request(): + ix = index.open_index() + return index.DelayedQuery(ix, self.searcher, self.request.query_params, self.paginator.page_size) + else: + return super(UnifiedSearchViewSet, self).filter_queryset(queryset) + + def list(self, request, *args, **kwargs): + if self._is_search_request(): + ix = index.open_index() + with ix.searcher() as s: + self.searcher = s + return super(UnifiedSearchViewSet, self).list(request) + else: + return super(UnifiedSearchViewSet, self).list(request) + class LogViewSet(ViewSet): permission_classes = (IsAuthenticated,) diff --git a/src/paperless/urls.py b/src/paperless/urls.py index 4e0b8f191..176fce257 100755 --- a/src/paperless/urls.py +++ b/src/paperless/urls.py @@ -12,7 +12,7 @@ from django.utils.translation import gettext_lazy as _ from paperless.consumers import StatusConsumer from documents.views import ( CorrespondentViewSet, - DocumentViewSet, + UnifiedSearchViewSet, LogViewSet, TagViewSet, DocumentTypeViewSet, @@ -31,7 +31,7 @@ from paperless.views import FaviconView api_router = DefaultRouter() api_router.register(r"correspondents", CorrespondentViewSet) api_router.register(r"document_types", DocumentTypeViewSet) -api_router.register(r"documents", DocumentViewSet) +api_router.register(r"documents", UnifiedSearchViewSet) api_router.register(r"logs", LogViewSet, basename="logs") api_router.register(r"tags", TagViewSet) api_router.register(r"saved_views", SavedViewViewSet) From eb611b2c41b19a3c04b281a186dbb20f37a8b12b Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 14 Mar 2021 09:33:57 -0700 Subject: [PATCH 02/93] Fix icons sometimes cut off in certain browsers --- .../document-card-large/document-card-large.component.scss | 5 +++-- .../document-card-small/document-card-small.component.scss | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss index c3a358a2b..b60240c70 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss @@ -51,8 +51,9 @@ } .metadata-icon { - width: 0.8rem; - height: 0.8rem; + width: 1.0rem; + height: 1.0rem; + padding: 0.05rem; } .search-score { diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss index 2daa97337..4997682a4 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss @@ -53,8 +53,9 @@ } .metadata-icon { - width: 0.8rem; - height: 0.8rem; + width: 1.0rem; + height: 1.0rem; + padding: 0.05rem; } } From 30bf7418f56e09a92a77f3223bd2c72159e2f9fc Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 14 Mar 2021 09:35:53 -0700 Subject: [PATCH 03/93] Dont change size overall --- .../document-card-large/document-card-large.component.scss | 4 ++-- .../document-card-small/document-card-small.component.scss | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss index b60240c70..9507ab42a 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.scss @@ -51,8 +51,8 @@ } .metadata-icon { - width: 1.0rem; - height: 1.0rem; + width: 0.9rem; + height: 0.9rem; padding: 0.05rem; } diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss index 4997682a4..943df03b9 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.scss @@ -53,8 +53,8 @@ } .metadata-icon { - width: 1.0rem; - height: 1.0rem; + width: 0.9rem; + height: 0.9rem; padding: 0.05rem; } } From 50bcd3daf19a07e921500dc83b1ea38416d40832 Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 15 Mar 2021 10:48:25 +0100 Subject: [PATCH 04/93] New Crowdin updates (#764) --- src-ui/src/locale/messages.en_GB.xlf | 2 +- src-ui/src/locale/messages.es_ES.xlf | 2 +- src-ui/src/locale/messages.fr_FR.xlf | 2 +- src-ui/src/locale/messages.it_IT.xlf | 2 +- src-ui/src/locale/messages.nl_NL.xlf | 2 +- src-ui/src/locale/messages.pt_PT.xlf | 2 +- src-ui/src/locale/messages.ru_RU.xlf | 64 +++++++++++++------------- src/locale/en_GB/LC_MESSAGES/django.po | 4 +- src/locale/es_ES/LC_MESSAGES/django.po | 4 +- src/locale/fr_FR/LC_MESSAGES/django.po | 4 +- src/locale/it_IT/LC_MESSAGES/django.po | 4 +- src/locale/nl_NL/LC_MESSAGES/django.po | 4 +- src/locale/pt_PT/LC_MESSAGES/django.po | 6 +-- src/locale/ru_RU/LC_MESSAGES/django.po | 6 +-- 14 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src-ui/src/locale/messages.en_GB.xlf b/src-ui/src/locale/messages.en_GB.xlf index d5faf1be4..76b0c8ab6 100644 --- a/src-ui/src/locale/messages.en_GB.xlf +++ b/src-ui/src/locale/messages.en_GB.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Spanish ISO 8601 diff --git a/src-ui/src/locale/messages.es_ES.xlf b/src-ui/src/locale/messages.es_ES.xlf index b47f696e8..46b3e3d10 100644 --- a/src-ui/src/locale/messages.es_ES.xlf +++ b/src-ui/src/locale/messages.es_ES.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Español ISO 8601 diff --git a/src-ui/src/locale/messages.fr_FR.xlf b/src-ui/src/locale/messages.fr_FR.xlf index c88ece3c5..f0aaab1f9 100644 --- a/src-ui/src/locale/messages.fr_FR.xlf +++ b/src-ui/src/locale/messages.fr_FR.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Espagnol ISO 8601 diff --git a/src-ui/src/locale/messages.it_IT.xlf b/src-ui/src/locale/messages.it_IT.xlf index 50e851625..a30ad7cae 100644 --- a/src-ui/src/locale/messages.it_IT.xlf +++ b/src-ui/src/locale/messages.it_IT.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Spagnolo ISO 8601 diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index 2c4a6e543..796ba8f62 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Spaans ISO 8601 diff --git a/src-ui/src/locale/messages.pt_PT.xlf b/src-ui/src/locale/messages.pt_PT.xlf index cfa13a0ad..9a12e56a7 100644 --- a/src-ui/src/locale/messages.pt_PT.xlf +++ b/src-ui/src/locale/messages.pt_PT.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Espanhol ISO 8601 diff --git a/src-ui/src/locale/messages.ru_RU.xlf b/src-ui/src/locale/messages.ru_RU.xlf index 1ec2b178f..5b0ad2a2a 100644 --- a/src-ui/src/locale/messages.ru_RU.xlf +++ b/src-ui/src/locale/messages.ru_RU.xlf @@ -168,7 +168,7 @@ src/app/components/document-list/document-list.component.html 105 - АН + Архивный номер Correspondent @@ -184,7 +184,7 @@ src/app/components/document-list/document-list.component.html 117 - Заголовок + Название Document type @@ -464,7 +464,7 @@ src/app/components/dashboard/dashboard.component.ts 35 - Добро пожаловать в Paperless-ng, + Добро пожаловать в Paperless-ng! Dashboard @@ -472,7 +472,7 @@ src/app/components/dashboard/dashboard.component.html 1 - Панель + Главная Do you really want to delete the tag ""? @@ -504,7 +504,7 @@ src/app/components/manage/tag-list/tag-list.component.html 8 - Отфильтровать по: + Фильтр по: Name @@ -616,7 +616,7 @@ src/app/components/manage/settings/settings.component.ts 100 - Использовать формат даты, соответсвующий языку + Использовать формат даты, соответствующий языку Error while storing settings on server: @@ -640,7 +640,7 @@ src/app/components/manage/settings/settings.component.html 10 - Основные настройки + Основные Notifications @@ -656,7 +656,7 @@ src/app/components/manage/settings/settings.component.html 134 - Сохраненные представления + Представления Appearance @@ -744,7 +744,7 @@ src/app/components/manage/settings/settings.component.html 87 - Использовать просмоторщик PDF встроенный в браузер + Использовать просмотрщик PDF встроенный в браузер This is usually faster for displaying large PDF documents, but it might not work on some browsers. @@ -752,7 +752,7 @@ src/app/components/manage/settings/settings.component.html 87 - Это, обычно, более быстрый способо отображения больших PDF документов, но он может не работать в некоторых браузерах. + Это, обычно, более быстрый способ отображения больших PDF документов, но он может не работать в некоторых браузерах. Dark mode @@ -824,7 +824,7 @@ src/app/components/manage/settings/settings.component.html 119 - Документ обрабатывается + Обработка документа Show notifications when new documents are detected @@ -832,7 +832,7 @@ src/app/components/manage/settings/settings.component.html 123 - Показывать уведомления, когда новый документ удалён + Показывать уведомления, когда новый документ удалён Show notifications when document processing completes successfully @@ -840,7 +840,7 @@ src/app/components/manage/settings/settings.component.html 124 - Показывать уведомления, когда обработка документа успешна + Показывать уведомления, когда обработка документа успешна Show notifications when document processing fails @@ -848,7 +848,7 @@ src/app/components/manage/settings/settings.component.html 125 - Показывать уведомления, когда обработка документа не удалась + Показывать уведомления, когда обработка документа не удалась Suppress notifications on dashboard @@ -856,7 +856,7 @@ src/app/components/manage/settings/settings.component.html 126 - Спрятать уведомления на панели + Спрятать уведомления на главной This will suppress all messages about document processing status on the dashboard. @@ -864,7 +864,7 @@ src/app/components/manage/settings/settings.component.html 126 - Это отключит все сообщения о статусе обработки документов на панели. + Это отключит все сообщения о статусе обработки документов на главной. Appears on @@ -880,7 +880,7 @@ src/app/components/manage/settings/settings.component.html 149 - Показать на панели + Показать на главной Show in sidebar @@ -1129,7 +1129,7 @@ src/app/components/app-frame/app-frame.component.html 154 - Админ + Администрирование Info @@ -1145,7 +1145,7 @@ src/app/components/app-frame/app-frame.component.html 167 - Документация + Документация GitHub @@ -1201,7 +1201,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 78 - Заголовок и содержимое + Название и содержимое ASN @@ -1265,7 +1265,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 54 - Заголовок: + Название: ASN: @@ -1273,7 +1273,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 57 - ASN: + Архивный номер: Filter tags @@ -1314,7 +1314,7 @@ 166 Filter drop down element to filter for documents with no correspondent/type/tag assigned - Не назначено + Не назначено Apply @@ -1557,7 +1557,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts 186 - Эта операция удалит тип из выбранных документов + Эта операция удалит тип из выбранных документов. Delete confirm @@ -1741,7 +1741,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 13 - Перетащите документы сюда или + Перетащите документы или Browse files @@ -1749,7 +1749,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 13 - Загрузить файлы + Загрузите файлы Dismiss completed @@ -1799,7 +1799,7 @@ src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html 6,7 - Вы можете загрузить документы, перетащив их на панель загрузки файлов справа, либо положив их в каталог, указанный в настройках. После обработки документы появятся в списке документов. После того, как вы добавите метаданные в свои документы, используйте безбумажные механизмы фильтрации для создания пользовательских представлений (таких как «Недавно добавленные», «Tagged TODO»), и они появятся на панели управления вместо этого сообщения. + Вы можете загрузить документы, перетащив их на панель загрузки файлов справа, либо положив их в каталог, указанный в настройках. После обработки документы появятся в списке документов. После того, как вы добавите метаданные в свои документы, используйте безбумажные механизмы фильтрации для создания пользовательских представлений (таких как «Недавно добавленные», «Tagged TODO»), и они появятся здесь вместо этого сообщения. Paperless offers some more features that try to make your life easier: @@ -1887,7 +1887,7 @@ src/app/pipes/document-title.pipe.ts 12 - (без заголовка) + (без названия) English (US) @@ -1959,7 +1959,7 @@ src/app/services/settings.service.ts 98 - Russian + Русский Spanish @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 99 - Spanish + Испанский ISO 8601 @@ -2000,7 +2000,7 @@ 17 Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation - скрипт предобработки не существует. + Скрипт предобработки не существует. Error while executing pre-consume script. @@ -2018,7 +2018,7 @@ 19 Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation - скрипт постобработки не существует. + Скрипт постобработки не существует. Error while executing post-consume script. diff --git a/src/locale/en_GB/LC_MESSAGES/django.po b/src/locale/en_GB/LC_MESSAGES/django.po index 4880f22cc..90a8d2a90 100644 --- a/src/locale/en_GB/LC_MESSAGES/django.po +++ b/src/locale/en_GB/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"PO-Revision-Date: 2021-03-14 20:04\n" "Last-Translator: \n" "Language-Team: English, United Kingdom\n" "Language: en_GB\n" @@ -442,7 +442,7 @@ msgstr "Russian" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Spanish" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/es_ES/LC_MESSAGES/django.po b/src/locale/es_ES/LC_MESSAGES/django.po index 167a2d321..9f1a8a8b3 100644 --- a/src/locale/es_ES/LC_MESSAGES/django.po +++ b/src/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:58\n" +"PO-Revision-Date: 2021-03-14 20:04\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -442,7 +442,7 @@ msgstr "Ruso" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Español" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/fr_FR/LC_MESSAGES/django.po b/src/locale/fr_FR/LC_MESSAGES/django.po index 2c1afc042..b157c8857 100644 --- a/src/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:58\n" +"PO-Revision-Date: 2021-03-14 20:04\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -442,7 +442,7 @@ msgstr "Russe" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Espagnol" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index b5025ede3..a7d02824b 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"PO-Revision-Date: 2021-03-14 18:56\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -442,7 +442,7 @@ msgstr "Russo" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Spagnolo" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/nl_NL/LC_MESSAGES/django.po b/src/locale/nl_NL/LC_MESSAGES/django.po index 3f7c14464..72dc77e0c 100644 --- a/src/locale/nl_NL/LC_MESSAGES/django.po +++ b/src/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"PO-Revision-Date: 2021-03-14 15:58\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -442,7 +442,7 @@ msgstr "Russisch" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Spaans" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index c65e0356a..4201d63b2 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"PO-Revision-Date: 2021-03-14 14:58\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -60,7 +60,7 @@ msgstr "algoritmo correspondente" #: documents/models.py:55 msgid "is insensitive" -msgstr "" +msgstr "é insensível" #: documents/models.py:74 documents/models.py:120 msgid "correspondent" @@ -442,7 +442,7 @@ msgstr "Russo" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Espanhol" #: paperless/urls.py:118 msgid "Paperless-ng administration" diff --git a/src/locale/ru_RU/LC_MESSAGES/django.po b/src/locale/ru_RU/LC_MESSAGES/django.po index cbc5a4a60..bf4d6ea7d 100644 --- a/src/locale/ru_RU/LC_MESSAGES/django.po +++ b/src/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"PO-Revision-Date: 2021-03-14 22:17\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -438,11 +438,11 @@ msgstr "Romanian" #: paperless/settings.py:306 msgid "Russian" -msgstr "" +msgstr "Русский" #: paperless/settings.py:307 msgid "Spanish" -msgstr "" +msgstr "Испанский" #: paperless/urls.py:118 msgid "Paperless-ng administration" From e1254a053ab835437f5e83ff75572434e9bd8e00 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 08:38:47 -0700 Subject: [PATCH 05/93] Fix log container taller than viewport --- src-ui/src/app/components/manage/logs/logs.component.html | 2 +- src-ui/src/app/components/manage/logs/logs.component.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index 5b2d198c9..e631ff46e 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -11,7 +11,7 @@
-
+

{{log}}

diff --git a/src-ui/src/app/components/manage/logs/logs.component.scss b/src-ui/src/app/components/manage/logs/logs.component.scss index aae238167..834c8c1cb 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.scss +++ b/src-ui/src/app/components/manage/logs/logs.component.scss @@ -17,7 +17,7 @@ .log-container { overflow-y: scroll; - height: calc(100vh - 190px); + height: calc(100vh - 200px); top: 70px; p { From 2e21fbf61991a66be247f73fa2051d7f02206724 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 08:38:55 -0700 Subject: [PATCH 06/93] Reverse log order --- src-ui/src/app/components/manage/logs/logs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index e631ff46e..fceac0f78 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -14,5 +14,5 @@

{{log}}

+ *ngFor="let log of logs.reverse()">{{log}}

From 316a2469b82bc9311e9a56a0b30717a045e63584 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 08:42:10 -0700 Subject: [PATCH 07/93] Side effecting --- src-ui/src/app/components/manage/logs/logs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index fceac0f78..caa4ca23b 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -14,5 +14,5 @@

{{log}}

+ *ngFor="let log of logs.slice().reverse()">{{log}}

From 46be3924e4955fbc6fb9228c447a4dac840d0ff2 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 08:45:30 -0700 Subject: [PATCH 08/93] Revert "Side effecting" This reverts commit 316a2469b82bc9311e9a56a0b30717a045e63584. --- src-ui/src/app/components/manage/logs/logs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index caa4ca23b..fceac0f78 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -14,5 +14,5 @@

{{log}}

+ *ngFor="let log of logs.reverse()">{{log}}

From a94a81d839e5f0208f1323e62b21398fe5377cab Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 08:45:33 -0700 Subject: [PATCH 09/93] Revert "Reverse log order" This reverts commit 2e21fbf61991a66be247f73fa2051d7f02206724. --- src-ui/src/app/components/manage/logs/logs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index fceac0f78..e631ff46e 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -14,5 +14,5 @@

{{log}}

+ *ngFor="let log of logs">{{log}}

From b9d09549243afa98427b422df3baede76600a6b4 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Mar 2021 09:56:17 -0700 Subject: [PATCH 10/93] Automatically scroll log ouput --- .../manage/logs/logs.component.html | 2 +- .../components/manage/logs/logs.component.ts | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.html b/src-ui/src/app/components/manage/logs/logs.component.html index e631ff46e..0633daf32 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.html +++ b/src-ui/src/app/components/manage/logs/logs.component.html @@ -11,7 +11,7 @@
-
+

{{log}}

diff --git a/src-ui/src/app/components/manage/logs/logs.component.ts b/src-ui/src/app/components/manage/logs/logs.component.ts index d77fcde4a..fd99abc2a 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.ts +++ b/src-ui/src/app/components/manage/logs/logs.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { Component, ElementRef, AfterViewChecked, ViewChild } from '@angular/core'; import { LogService } from 'src/app/services/rest/log.service'; @Component({ @@ -6,7 +6,7 @@ import { LogService } from 'src/app/services/rest/log.service'; templateUrl: './logs.component.html', styleUrls: ['./logs.component.scss'] }) -export class LogsComponent implements OnInit { +export class LogsComponent implements AfterViewChecked { constructor(private logService: LogService) { } @@ -16,6 +16,8 @@ export class LogsComponent implements OnInit { activeLog: string + @ViewChild('logContainer') logContainer: ElementRef + ngOnInit(): void { this.logService.list().subscribe(result => { this.logFiles = result @@ -26,9 +28,14 @@ export class LogsComponent implements OnInit { }) } + ngAfterViewChecked() { + this.scrollToBottom(); + } + reloadLogs() { this.logService.get(this.activeLog).subscribe(result => { this.logs = result + this.scrollToBottom() }, error => { this.logs = [] }) @@ -48,4 +55,12 @@ export class LogsComponent implements OnInit { } } + scrollToBottom(): void { + this.logContainer?.nativeElement.scroll({ + top: this.logContainer.nativeElement.scrollHeight, + left: 0, + behavior: 'auto' + }); + } + } From 6b15093c43ea4f7d899b9b3034e908ee1210980f Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 16 Mar 2021 10:40:38 +0100 Subject: [PATCH 11/93] New Crowdin updates (#776) --- src-ui/src/locale/messages.it_IT.xlf | 10 +++++----- src/locale/ru_RU/LC_MESSAGES/django.po | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src-ui/src/locale/messages.it_IT.xlf b/src-ui/src/locale/messages.it_IT.xlf index a30ad7cae..598d25095 100644 --- a/src-ui/src/locale/messages.it_IT.xlf +++ b/src-ui/src/locale/messages.it_IT.xlf @@ -528,7 +528,7 @@ src/app/components/manage/tag-list/tag-list.component.html 21 - Corrispondenza + Assegnazione Document count @@ -928,7 +928,7 @@ src/app/components/manage/correspondent-list/correspondent-list.component.html 22 - Ultrima corrispondenza + Ultima assegnazione Confirmation @@ -976,7 +976,7 @@ src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html 10 - Algoritmo di corrispondenza + Algoritmo di assegnazione Matching pattern @@ -984,7 +984,7 @@ src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html 11 - Criterio di corrispondenza + Criterio di assegnazione Case insensitive @@ -2291,7 +2291,7 @@ src/app/data/matching-model.ts 17 - Automatico: apprende automaticamente la corrispondenza + Automatico: apprende l'assegnazione automaticamente diff --git a/src/locale/ru_RU/LC_MESSAGES/django.po b/src/locale/ru_RU/LC_MESSAGES/django.po index bf4d6ea7d..628bbfa15 100644 --- a/src/locale/ru_RU/LC_MESSAGES/django.po +++ b/src/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 22:17\n" +"PO-Revision-Date: 2021-03-15 17:33\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -328,11 +328,11 @@ msgstr "не имеет тега" #: documents/models.py:388 msgid "does not have ASN" -msgstr "" +msgstr "не имеет архивного номера" #: documents/models.py:389 msgid "title or content contains" -msgstr "" +msgstr "Название или содержимое включает" #: documents/models.py:400 msgid "rule type" From ee04a9226b9812415a0b0c43908062e94b4607bc Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 16 Mar 2021 03:06:20 -0700 Subject: [PATCH 12/93] =?UTF-8?q?Don=E2=80=99t=20remove=20OnInit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-ui/src/app/components/manage/logs/logs.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.ts b/src-ui/src/app/components/manage/logs/logs.component.ts index fd99abc2a..54f8294c9 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.ts +++ b/src-ui/src/app/components/manage/logs/logs.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, AfterViewChecked, ViewChild } from '@angular/core'; +import { Component, ElementRef, OnInit, AfterViewChecked, ViewChild } from '@angular/core'; import { LogService } from 'src/app/services/rest/log.service'; @Component({ @@ -6,7 +6,7 @@ import { LogService } from 'src/app/services/rest/log.service'; templateUrl: './logs.component.html', styleUrls: ['./logs.component.scss'] }) -export class LogsComponent implements AfterViewChecked { +export class LogsComponent implements OnInit, AfterViewChecked { constructor(private logService: LogService) { } From 816871eed30b28bd838dc7f3eacb3ac7ed668bc6 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 16 Mar 2021 03:08:48 -0700 Subject: [PATCH 13/93] Redundant call to scroll --- src-ui/src/app/components/manage/logs/logs.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src-ui/src/app/components/manage/logs/logs.component.ts b/src-ui/src/app/components/manage/logs/logs.component.ts index 54f8294c9..26ceb5c57 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.ts +++ b/src-ui/src/app/components/manage/logs/logs.component.ts @@ -35,7 +35,6 @@ export class LogsComponent implements OnInit, AfterViewChecked { reloadLogs() { this.logService.get(this.activeLog).subscribe(result => { this.logs = result - this.scrollToBottom() }, error => { this.logs = [] }) From fa6d554d1fbbc4ac57159f4acd8d27ffc1244f8b Mon Sep 17 00:00:00 2001 From: isaacsando Date: Tue, 16 Mar 2021 11:16:48 -0500 Subject: [PATCH 14/93] update advanced_usage.rst to remove wording regarding filename parsing --- docs/advanced_usage.rst | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/advanced_usage.rst b/docs/advanced_usage.rst index c64df4317..b7d46e063 100644 --- a/docs/advanced_usage.rst +++ b/docs/advanced_usage.rst @@ -10,14 +10,13 @@ easier. Matching tags, correspondents and document types ################################################ -After the consumer has tried to figure out what it could from the file name, -it starts looking at the content of the document itself. It will compare the -matching algorithms defined by every tag and correspondent already set in your -database to see if they apply to the text in that document. In other words, -if you defined a tag called ``Home Utility`` that had a ``match`` property of -``bc hydro`` and a ``matching_algorithm`` of ``literal``, Paperless will -automatically tag your newly-consumed document with your ``Home Utility`` tag -so long as the text ``bc hydro`` appears in the body of the document somewhere. +Paperless will compare the matching algorithms defined by every tag and +correspondent already set in your database to see if they apply to the text in +a document. In other words, if you defined a tag called ``Home Utility`` +that had a ``match`` property of ``bc hydro`` and a ``matching_algorithm`` of +``literal``, Paperless will automatically tag your newly-consumed document with +your ``Home Utility`` tag so long as the text ``bc hydro`` appears in the body +of the document somewhere. The matching logic is quite powerful, and supports searching the text of your document with different algorithms, and as such, some experimentation may be From 6606d7572c357ea0bca9281e56c7ae8a37d63dbe Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 16 Mar 2021 20:47:45 +0100 Subject: [PATCH 15/93] API refactoring --- src/documents/views.py | 53 ++++-------------------------------------- 1 file changed, 5 insertions(+), 48 deletions(-) diff --git a/src/documents/views.py b/src/documents/views.py index a3f495d50..7b282dfb7 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -18,6 +18,7 @@ from django_q.tasks import async_task from rest_framework import parsers from rest_framework.decorators import action from rest_framework.filters import OrderingFilter, SearchFilter +from rest_framework.generics import GenericAPIView from rest_framework.mixins import ( DestroyModelMixin, ListModelMixin, @@ -366,23 +367,12 @@ class SavedViewViewSet(ModelViewSet): serializer.save(user=self.request.user) -class BulkEditView(APIView): +class BulkEditView(GenericAPIView): permission_classes = (IsAuthenticated,) serializer_class = BulkEditSerializer parser_classes = (parsers.JSONParser,) - def get_serializer_context(self): - return { - 'request': self.request, - 'format': self.format_kwarg, - 'view': self - } - - def get_serializer(self, *args, **kwargs): - kwargs['context'] = self.get_serializer_context() - return self.serializer_class(*args, **kwargs) - def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) @@ -399,23 +389,12 @@ class BulkEditView(APIView): return HttpResponseBadRequest(str(e)) -class PostDocumentView(APIView): +class PostDocumentView(GenericAPIView): permission_classes = (IsAuthenticated,) serializer_class = PostDocumentSerializer parser_classes = (parsers.MultiPartParser,) - def get_serializer_context(self): - return { - 'request': self.request, - 'format': self.format_kwarg, - 'view': self - } - - def get_serializer(self, *args, **kwargs): - kwargs['context'] = self.get_serializer_context() - return self.serializer_class(*args, **kwargs) - def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) @@ -453,23 +432,12 @@ class PostDocumentView(APIView): return Response("OK") -class SelectionDataView(APIView): +class SelectionDataView(GenericAPIView): permission_classes = (IsAuthenticated,) serializer_class = DocumentListSerializer parser_classes = (parsers.MultiPartParser, parsers.JSONParser) - def get_serializer_context(self): - return { - 'request': self.request, - 'format': self.format_kwarg, - 'view': self - } - - def get_serializer(self, *args, **kwargs): - kwargs['context'] = self.get_serializer_context() - return self.serializer_class(*args, **kwargs) - def post(self, request, format=None): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) @@ -620,23 +588,12 @@ class StatisticsView(APIView): }) -class BulkDownloadView(APIView): +class BulkDownloadView(GenericAPIView): permission_classes = (IsAuthenticated,) serializer_class = BulkDownloadSerializer parser_classes = (parsers.JSONParser,) - def get_serializer_context(self): - return { - 'request': self.request, - 'format': self.format_kwarg, - 'view': self - } - - def get_serializer(self, *args, **kwargs): - kwargs['context'] = self.get_serializer_context() - return self.serializer_class(*args, **kwargs) - def post(self, request, format=None): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) From 4cd1672094f59ce0e54edf8a07527e48f418f15f Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 02:14:43 +0100 Subject: [PATCH 16/93] New Crowdin updates (#787) --- src/locale/pt_PT/LC_MESSAGES/django.po | 120 ++++++++++++------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index 4201d63b2..8584309ec 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 14:58\n" +"PO-Revision-Date: 2021-03-16 22:35\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -124,19 +124,19 @@ msgstr "" #: documents/models.py:155 msgid "checksum" -msgstr "" +msgstr "soma de verificação" #: documents/models.py:159 msgid "The checksum of the original document." -msgstr "" +msgstr "A soma de verificação do documento original." #: documents/models.py:163 msgid "archive checksum" -msgstr "" +msgstr "arquivar soma de verificação" #: documents/models.py:168 msgid "The checksum of the archived document." -msgstr "" +msgstr "A soma de verificação do documento arquivado." #: documents/models.py:172 documents/models.py:328 msgid "created" @@ -160,19 +160,19 @@ msgstr "nome de ficheiro" #: documents/models.py:198 msgid "Current filename in storage" -msgstr "" +msgstr "Nome do arquivo atual no armazenamento" #: documents/models.py:202 msgid "archive filename" -msgstr "" +msgstr "nome do ficheiro de arquivo" #: documents/models.py:208 msgid "Current archive filename in storage" -msgstr "" +msgstr "Nome do arquivo atual em no armazenamento" #: documents/models.py:212 msgid "archive serial number" -msgstr "" +msgstr "numero de série de arquivo" #: documents/models.py:217 msgid "The position of this document in your physical document archive." @@ -228,11 +228,11 @@ msgstr "registos" #: documents/models.py:344 documents/models.py:396 msgid "saved view" -msgstr "" +msgstr "vista guardada" #: documents/models.py:345 msgid "saved views" -msgstr "" +msgstr "vistas guardadas" #: documents/models.py:348 msgid "user" @@ -244,23 +244,23 @@ msgstr "exibir no painel de controlo" #: documents/models.py:357 msgid "show in sidebar" -msgstr "" +msgstr "mostrar na navegação lateral" #: documents/models.py:361 msgid "sort field" -msgstr "" +msgstr "ordenar campo" #: documents/models.py:364 msgid "sort reverse" -msgstr "" +msgstr "ordenar inversamente" #: documents/models.py:370 msgid "title contains" -msgstr "" +msgstr "o título contém" #: documents/models.py:371 msgid "content contains" -msgstr "" +msgstr "o conteúdo contém" #: documents/models.py:372 msgid "ASN is" @@ -268,11 +268,11 @@ msgstr "" #: documents/models.py:373 msgid "correspondent is" -msgstr "" +msgstr "o correspondente é" #: documents/models.py:374 msgid "document type is" -msgstr "" +msgstr "o tipo de documento é" #: documents/models.py:375 msgid "is in inbox" @@ -280,51 +280,51 @@ msgstr "" #: documents/models.py:376 msgid "has tag" -msgstr "" +msgstr "tem etiqueta" #: documents/models.py:377 msgid "has any tag" -msgstr "" +msgstr "tem qualquer etiqueta" #: documents/models.py:378 msgid "created before" -msgstr "" +msgstr "criado antes" #: documents/models.py:379 msgid "created after" -msgstr "" +msgstr "criado depois" #: documents/models.py:380 msgid "created year is" -msgstr "" +msgstr "ano criada é" #: documents/models.py:381 msgid "created month is" -msgstr "" +msgstr "mês criado é" #: documents/models.py:382 msgid "created day is" -msgstr "" +msgstr "dia criado é" #: documents/models.py:383 msgid "added before" -msgstr "" +msgstr "adicionada antes" #: documents/models.py:384 msgid "added after" -msgstr "" +msgstr "adicionado depois de" #: documents/models.py:385 msgid "modified before" -msgstr "" +msgstr "modificado antes de" #: documents/models.py:386 msgid "modified after" -msgstr "" +msgstr "modificado depois de" #: documents/models.py:387 msgid "does not have tag" -msgstr "" +msgstr "não tem etiqueta" #: documents/models.py:388 msgid "does not have ASN" @@ -332,61 +332,61 @@ msgstr "" #: documents/models.py:389 msgid "title or content contains" -msgstr "" +msgstr "título ou conteúdo contém" #: documents/models.py:400 msgid "rule type" -msgstr "" +msgstr "tipo de regra" #: documents/models.py:404 msgid "value" -msgstr "" +msgstr "valor" #: documents/models.py:410 msgid "filter rule" -msgstr "" +msgstr "regra de filtragem" #: documents/models.py:411 msgid "filter rules" -msgstr "" +msgstr "regras de filtragem" #: documents/serialisers.py:53 #, python-format msgid "Invalid regular expression: %(error)s" -msgstr "" +msgstr "Expressão regular inválida: %(error)s" #: documents/serialisers.py:177 msgid "Invalid color." -msgstr "" +msgstr "Cor invalida." #: documents/serialisers.py:451 #, python-format msgid "File type %(type)s not supported" -msgstr "" +msgstr "Tipo de arquivo %(type)s não suportado" #: documents/templates/index.html:21 msgid "Paperless-ng is loading..." -msgstr "" +msgstr "O paperless-ng está a carregar..." #: documents/templates/registration/logged_out.html:13 msgid "Paperless-ng signed out" -msgstr "" +msgstr "Paperless-ng com sessão terminada" #: documents/templates/registration/logged_out.html:41 msgid "You have been successfully logged out. Bye!" -msgstr "" +msgstr "Terminou a sessão com sucesso. Adeus!" #: documents/templates/registration/logged_out.html:42 msgid "Sign in again" -msgstr "" +msgstr "Iniciar sessão novamente" #: documents/templates/registration/login.html:13 msgid "Paperless-ng sign in" -msgstr "" +msgstr "Inicio de sessão Paperless-ng" #: documents/templates/registration/login.html:42 msgid "Please sign in." -msgstr "" +msgstr "Por favor inicie sessão." #: documents/templates/registration/login.html:45 msgid "Your username and password didn't match. Please try again." @@ -394,15 +394,15 @@ msgstr "" #: documents/templates/registration/login.html:48 msgid "Username" -msgstr "" +msgstr "Nome de utilizador" #: documents/templates/registration/login.html:49 msgid "Password" -msgstr "" +msgstr "Palavra-passe" #: documents/templates/registration/login.html:54 msgid "Sign in" -msgstr "" +msgstr "Iniciar sessão" #: paperless/settings.py:298 msgid "English (US)" @@ -426,15 +426,15 @@ msgstr "Français" #: paperless/settings.py:303 msgid "Portuguese (Brazil)" -msgstr "" +msgstr "Português (Brasil)" #: paperless/settings.py:304 msgid "Italian" -msgstr "" +msgstr "Italiano" #: paperless/settings.py:305 msgid "Romanian" -msgstr "" +msgstr "Romeno" #: paperless/settings.py:306 msgid "Russian" @@ -446,11 +446,11 @@ msgstr "Espanhol" #: paperless/urls.py:118 msgid "Paperless-ng administration" -msgstr "" +msgstr "Administração do Paperless-ng" #: paperless_mail/admin.py:25 msgid "Filter" -msgstr "" +msgstr "Filtro" #: paperless_mail/admin.py:27 msgid "Paperless will only process mails that match ALL of the filters given below." @@ -602,35 +602,35 @@ msgstr "" #: paperless_mail/models.py:138 msgid "filter attachment filename" -msgstr "" +msgstr "filtrar nome do arquivo anexo" #: paperless_mail/models.py:140 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." -msgstr "" +msgstr "Consumir apenas documentos que correspondam inteiramente ao nome de arquivo se especificado. Genéricos como *.pdf ou *fatura* são permitidos. Não é sensível a letras maiúsculas/minúsculas." #: paperless_mail/models.py:146 msgid "maximum age" -msgstr "" +msgstr "idade máxima" #: paperless_mail/models.py:148 msgid "Specified in days." -msgstr "" +msgstr "Especificado em dias." #: paperless_mail/models.py:151 msgid "attachment type" -msgstr "" +msgstr "tipo de anexo" #: paperless_mail/models.py:154 msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter." -msgstr "" +msgstr "Anexos embutidos incluem imagens incorporadas, por isso é melhor combinar esta opção com um filtro de nome do arquivo." #: paperless_mail/models.py:159 msgid "action" -msgstr "" +msgstr "ação" #: paperless_mail/models.py:165 msgid "action parameter" -msgstr "" +msgstr "parâmetro de ação" #: paperless_mail/models.py:167 msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action." From b6ff88645bd2e52599d1151e5c4074b0f3f1ffb0 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 22:25:22 +0100 Subject: [PATCH 17/93] lots of changes for the new unified search --- src-ui/src/app/app-routing.module.ts | 2 - src-ui/src/app/app.module.ts | 4 - .../app-frame/app-frame.component.ts | 5 +- .../document-detail.component.ts | 3 +- .../document-card-large.component.html | 10 +- .../document-card-large.component.scss | 5 + .../document-card-large.component.ts | 28 +- .../document-list.component.html | 2 +- .../document-list/document-list.component.ts | 7 + .../filter-editor.component.html | 4 +- .../filter-editor/filter-editor.component.ts | 47 ++- .../result-highlight.component.html | 3 - .../result-highlight.component.scss | 4 - .../result-highlight.component.spec.ts | 25 -- .../result-highlight.component.ts | 19 -- .../components/search/search.component.html | 26 -- .../components/search/search.component.scss | 15 - .../search/search.component.spec.ts | 25 -- .../app/components/search/search.component.ts | 95 ------ src-ui/src/app/data/filter-rule-type.ts | 9 +- src-ui/src/app/data/paperless-document.ts | 11 + src-ui/src/app/data/search-result.ts | 29 -- .../services/document-list-view.service.ts | 12 +- .../src/app/services/rest/search.service.ts | 27 +- src/documents/index.py | 289 ++++++++++-------- src/documents/models.py | 7 +- src/documents/tests/test_index.py | 10 - src/documents/views.py | 117 +++---- src/paperless/urls.py | 5 - 29 files changed, 302 insertions(+), 543 deletions(-) delete mode 100644 src-ui/src/app/components/search/result-highlight/result-highlight.component.html delete mode 100644 src-ui/src/app/components/search/result-highlight/result-highlight.component.scss delete mode 100644 src-ui/src/app/components/search/result-highlight/result-highlight.component.spec.ts delete mode 100644 src-ui/src/app/components/search/result-highlight/result-highlight.component.ts delete mode 100644 src-ui/src/app/components/search/search.component.html delete mode 100644 src-ui/src/app/components/search/search.component.scss delete mode 100644 src-ui/src/app/components/search/search.component.spec.ts delete mode 100644 src-ui/src/app/components/search/search.component.ts delete mode 100644 src-ui/src/app/data/search-result.ts diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index 27f0629b4..89fec9eac 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -10,7 +10,6 @@ import { LogsComponent } from './components/manage/logs/logs.component'; import { SettingsComponent } from './components/manage/settings/settings.component'; import { TagListComponent } from './components/manage/tag-list/tag-list.component'; import { NotFoundComponent } from './components/not-found/not-found.component'; -import { SearchComponent } from './components/search/search.component'; const routes: Routes = [ {path: '', redirectTo: 'dashboard', pathMatch: 'full'}, @@ -18,7 +17,6 @@ const routes: Routes = [ {path: 'dashboard', component: DashboardComponent }, {path: 'documents', component: DocumentListComponent }, {path: 'view/:id', component: DocumentListComponent }, - {path: 'search', component: SearchComponent }, {path: 'documents/:id', component: DocumentDetailComponent }, {path: 'tags', component: TagListComponent }, diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index c364424ad..cf149b785 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -21,8 +21,6 @@ import { CorrespondentEditDialogComponent } from './components/manage/correspond import { TagEditDialogComponent } from './components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component'; import { DocumentTypeEditDialogComponent } from './components/manage/document-type-list/document-type-edit-dialog/document-type-edit-dialog.component'; import { TagComponent } from './components/common/tag/tag.component'; -import { SearchComponent } from './components/search/search.component'; -import { ResultHighlightComponent } from './components/search/result-highlight/result-highlight.component'; import { PageHeaderComponent } from './components/common/page-header/page-header.component'; import { AppFrameComponent } from './components/app-frame/app-frame.component'; import { ToastsComponent } from './components/common/toasts/toasts.component'; @@ -104,8 +102,6 @@ registerLocaleData(localeEs) TagEditDialogComponent, DocumentTypeEditDialogComponent, TagComponent, - SearchComponent, - ResultHighlightComponent, PageHeaderComponent, AppFrameComponent, ToastsComponent, diff --git a/src-ui/src/app/components/app-frame/app-frame.component.ts b/src-ui/src/app/components/app-frame/app-frame.component.ts index e360e7567..f8e76f0ae 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.ts +++ b/src-ui/src/app/components/app-frame/app-frame.component.ts @@ -10,6 +10,8 @@ import { SearchService } from 'src/app/services/rest/search.service'; import { environment } from 'src/environments/environment'; import { DocumentDetailComponent } from '../document-detail/document-detail.component'; import { Meta } from '@angular/platform-browser'; +import { DocumentListViewService } from 'src/app/services/document-list-view.service'; +import { FILTER_FULLTEXT_QUERY } from 'src/app/data/filter-rule-type'; @Component({ selector: 'app-app-frame', @@ -24,6 +26,7 @@ export class AppFrameComponent implements OnInit { private openDocumentsService: OpenDocumentsService, private searchService: SearchService, public savedViewService: SavedViewService, + private list: DocumentListViewService, private meta: Meta ) { @@ -74,7 +77,7 @@ export class AppFrameComponent implements OnInit { search() { this.closeMenu() - this.router.navigate(['search'], {queryParams: {query: this.searchField.value}}) + this.list.quickFilter([{rule_type: FILTER_FULLTEXT_QUERY, value: this.searchField.value}]) } closeDocument(d: PaperlessDocument) { diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index af98a6f7f..fee707b22 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -20,6 +20,7 @@ import { ToastService } from 'src/app/services/toast.service'; import { TextComponent } from '../common/input/text/text.component'; import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service'; import { PaperlessDocumentSuggestions } from 'src/app/data/paperless-document-suggestions'; +import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type'; @Component({ selector: 'app-document-detail', @@ -219,7 +220,7 @@ export class DocumentDetailComponent implements OnInit { } moreLike() { - this.router.navigate(["search"], {queryParams: {more_like:this.document.id}}) + this.documentListViewService.quickFilter([{rule_type: FILTER_FULLTEXT_MORELIKE, value: this.documentId.toString()}]) } hasNext() { diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html index 119960386..f3037b4fc 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html @@ -25,14 +25,14 @@

- - {{getDetailsAsString()}} + + {{contentTrimmed}}

-
+
Score: - +
- +
diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index cf7afb845..c0ad354ba 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -207,6 +207,13 @@ export class DocumentListComponent implements OnInit, OnDestroy { }) } + clickMoreLike(documentID: number) { + this.list.selectNone() + setTimeout(() => { + //this.filterEditor.moreLikeThis(doc) + }) + } + trackByDocumentId(index, item: PaperlessDocument) { return item.id } diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html index 7290354eb..490eed95d 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1,7 +1,6 @@
-
@@ -9,7 +8,8 @@
- + + {{_moreLikeDoc?.title}}
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 43387c08f..3b645ec97 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -8,13 +8,17 @@ import { DocumentTypeService } from 'src/app/services/rest/document-type.service import { TagService } from 'src/app/services/rest/tag.service'; import { CorrespondentService } from 'src/app/services/rest/correspondent.service'; import { FilterRule } from 'src/app/data/filter-rule'; -import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type'; +import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type'; import { FilterableDropdownSelectionModel } from '../../common/filterable-dropdown/filterable-dropdown.component'; import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component'; +import { DocumentService } from 'src/app/services/rest/document.service'; +import { PaperlessDocument } from 'src/app/data/paperless-document'; const TEXT_FILTER_TARGET_TITLE = "title" const TEXT_FILTER_TARGET_TITLE_CONTENT = "title-content" const TEXT_FILTER_TARGET_ASN = "asn" +const TEXT_FILTER_TARGET_FULLTEXT_QUERY = "fulltext-query" +const TEXT_FILTER_TARGET_FULLTEXT_MORELIKE = "fulltext-morelike" @Component({ selector: 'app-filter-editor', @@ -64,7 +68,8 @@ export class FilterEditorComponent implements OnInit, OnDestroy { constructor( private documentTypeService: DocumentTypeService, private tagService: TagService, - private correspondentService: CorrespondentService + private correspondentService: CorrespondentService, + private documentService: DocumentService ) { } tags: PaperlessTag[] = [] @@ -72,12 +77,21 @@ export class FilterEditorComponent implements OnInit, OnDestroy { documentTypes: PaperlessDocumentType[] = [] _textFilter = "" + _moreLikeId: number + _moreLikeDoc: PaperlessDocument - textFilterTargets = [ - {id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`}, - {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`}, - {id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`} - ] + get textFilterTargets() { + let targets = [ + {id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`}, + {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`}, + {id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`}, + {id: TEXT_FILTER_TARGET_FULLTEXT_QUERY, name: $localize`Fulltext search`} + ] + if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) { + targets.push({id: TEXT_FILTER_TARGET_FULLTEXT_MORELIKE, name: $localize`More like`}) + } + return targets + } textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT @@ -101,6 +115,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { this.tagSelectionModel.clear(false) this.correspondentSelectionModel.clear(false) this._textFilter = null + this._moreLikeId = null this.dateAddedBefore = null this.dateAddedAfter = null this.dateCreatedBefore = null @@ -120,6 +135,17 @@ export class FilterEditorComponent implements OnInit, OnDestroy { this._textFilter = rule.value this.textFilterTarget = TEXT_FILTER_TARGET_ASN break + case FILTER_FULLTEXT_QUERY: + this._textFilter = rule.value + this.textFilterTarget = TEXT_FILTER_TARGET_FULLTEXT_QUERY + break + case FILTER_FULLTEXT_MORELIKE: + this._moreLikeId = +rule.value + this.textFilterTarget = TEXT_FILTER_TARGET_FULLTEXT_MORELIKE + this.documentService.get(this._moreLikeId).subscribe(result => { + this._moreLikeDoc = result + }) + break case FILTER_CREATED_AFTER: this.dateCreatedAfter = rule.value break @@ -159,6 +185,12 @@ export class FilterEditorComponent implements OnInit, OnDestroy { if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_ASN) { filterRules.push({rule_type: FILTER_ASN, value: this._textFilter}) } + if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_QUERY) { + filterRules.push({rule_type: FILTER_FULLTEXT_QUERY, value: this._textFilter}) + } + if (this._moreLikeId && this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) { + filterRules.push({rule_type: FILTER_FULLTEXT_MORELIKE, value: this._moreLikeId?.toString()}) + } if (this.tagSelectionModel.isNoneSelected()) { filterRules.push({rule_type: FILTER_HAS_ANY_TAG, value: "false"}) } else { @@ -232,6 +264,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { } resetSelected() { + this.textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT this.reset.next() } diff --git a/src-ui/src/app/components/search/result-highlight/result-highlight.component.html b/src-ui/src/app/components/search/result-highlight/result-highlight.component.html deleted file mode 100644 index 5dc5baa94..000000000 --- a/src-ui/src/app/components/search/result-highlight/result-highlight.component.html +++ /dev/null @@ -1,3 +0,0 @@ -... - {{token.text}} ... - \ No newline at end of file diff --git a/src-ui/src/app/components/search/result-highlight/result-highlight.component.scss b/src-ui/src/app/components/search/result-highlight/result-highlight.component.scss deleted file mode 100644 index e04dd13b2..000000000 --- a/src-ui/src/app/components/search/result-highlight/result-highlight.component.scss +++ /dev/null @@ -1,4 +0,0 @@ -.match { - color: black; - background-color: rgb(255, 211, 66); -} \ No newline at end of file diff --git a/src-ui/src/app/components/search/result-highlight/result-highlight.component.spec.ts b/src-ui/src/app/components/search/result-highlight/result-highlight.component.spec.ts deleted file mode 100644 index 8e00a9d0b..000000000 --- a/src-ui/src/app/components/search/result-highlight/result-highlight.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ResultHighlightComponent } from './result-highlight.component'; - -describe('ResultHighlightComponent', () => { - let component: ResultHighlightComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ ResultHighlightComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(ResultHighlightComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src-ui/src/app/components/search/result-highlight/result-highlight.component.ts b/src-ui/src/app/components/search/result-highlight/result-highlight.component.ts deleted file mode 100644 index d9a1a50b1..000000000 --- a/src-ui/src/app/components/search/result-highlight/result-highlight.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { SearchHitHighlight } from 'src/app/data/search-result'; - -@Component({ - selector: 'app-result-highlight', - templateUrl: './result-highlight.component.html', - styleUrls: ['./result-highlight.component.scss'] -}) -export class ResultHighlightComponent implements OnInit { - - constructor() { } - - @Input() - highlights: SearchHitHighlight[][] - - ngOnInit(): void { - } - -} diff --git a/src-ui/src/app/components/search/search.component.html b/src-ui/src/app/components/search/search.component.html deleted file mode 100644 index f794a0feb..000000000 --- a/src-ui/src/app/components/search/search.component.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -
Invalid search query: {{errorMessage}}
- -

Showing documents similar to {{more_like_doc?.original_file_name}}

- -

- Search query: {{query}} - - - Did you mean "{{correctedQuery}}"? - -

- -
-

{resultCount, plural, =0 {No results} =1 {One result} other {{{resultCount}} results}}

- - - - - -
diff --git a/src-ui/src/app/components/search/search.component.scss b/src-ui/src/app/components/search/search.component.scss deleted file mode 100644 index 40ca79a61..000000000 --- a/src-ui/src/app/components/search/search.component.scss +++ /dev/null @@ -1,15 +0,0 @@ -.result-content { - color: darkgray; -} - -.doc-img { - object-fit: cover; - object-position: top; - height: 100%; - position: absolute; - -} - -.result-content-searching { - opacity: 0.3; -} \ No newline at end of file diff --git a/src-ui/src/app/components/search/search.component.spec.ts b/src-ui/src/app/components/search/search.component.spec.ts deleted file mode 100644 index 918ce7071..000000000 --- a/src-ui/src/app/components/search/search.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { SearchComponent } from './search.component'; - -describe('SearchComponent', () => { - let component: SearchComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ SearchComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(SearchComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src-ui/src/app/components/search/search.component.ts b/src-ui/src/app/components/search/search.component.ts deleted file mode 100644 index 4570ac3fa..000000000 --- a/src-ui/src/app/components/search/search.component.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { PaperlessDocument } from 'src/app/data/paperless-document'; -import { PaperlessDocumentType } from 'src/app/data/paperless-document-type'; -import { SearchHit } from 'src/app/data/search-result'; -import { DocumentService } from 'src/app/services/rest/document.service'; -import { SearchService } from 'src/app/services/rest/search.service'; - -@Component({ - selector: 'app-search', - templateUrl: './search.component.html', - styleUrls: ['./search.component.scss'] -}) -export class SearchComponent implements OnInit { - - results: SearchHit[] = [] - - query: string = "" - - more_like: number - - more_like_doc: PaperlessDocument - - searching = false - - currentPage = 1 - - pageCount = 1 - - resultCount - - correctedQuery: string = null - - errorMessage: string - - get maxScore() { - return this.results?.length > 0 ? this.results[0].score : 100 - } - - constructor(private searchService: SearchService, private route: ActivatedRoute, private router: Router, private documentService: DocumentService) { } - - ngOnInit(): void { - this.route.queryParamMap.subscribe(paramMap => { - window.scrollTo(0, 0) - this.query = paramMap.get('query') - this.more_like = paramMap.has('more_like') ? +paramMap.get('more_like') : null - if (this.more_like) { - this.documentService.get(this.more_like).subscribe(r => { - this.more_like_doc = r - }) - } else { - this.more_like_doc = null - } - this.searching = true - this.currentPage = 1 - this.loadPage() - }) - - } - - searchCorrectedQuery() { - this.router.navigate(["search"], {queryParams: {query: this.correctedQuery, more_like: this.more_like}}) - } - - loadPage(append: boolean = false) { - this.errorMessage = null - this.correctedQuery = null - - this.searchService.search(this.query, this.currentPage, this.more_like).subscribe(result => { - if (append) { - this.results.push(...result.results) - } else { - this.results = result.results - } - this.pageCount = result.page_count - this.searching = false - this.resultCount = result.count - this.correctedQuery = result.corrected_query - }, error => { - this.searching = false - this.resultCount = 1 - this.pageCount = 1 - this.results = [] - this.errorMessage = error.error - }) - } - - onScroll() { - if (this.currentPage < this.pageCount) { - this.currentPage += 1 - this.loadPage(true) - } - } - -} diff --git a/src-ui/src/app/data/filter-rule-type.ts b/src-ui/src/app/data/filter-rule-type.ts index 2c9f8a373..c215be84e 100644 --- a/src-ui/src/app/data/filter-rule-type.ts +++ b/src-ui/src/app/data/filter-rule-type.ts @@ -22,6 +22,9 @@ export const FILTER_ASN_ISNULL = 18 export const FILTER_TITLE_CONTENT = 19 +export const FILTER_FULLTEXT_QUERY = 20 +export const FILTER_FULLTEXT_MORELIKE = 21 + export const FILTER_RULE_TYPES: FilterRuleType[] = [ {id: FILTER_TITLE, filtervar: "title__icontains", datatype: "string", multi: false, default: ""}, @@ -51,7 +54,11 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [ {id: FILTER_MODIFIED_AFTER, filtervar: "modified__date__gt", datatype: "date", multi: false}, {id: FILTER_ASN_ISNULL, filtervar: "archive_serial_number__isnull", datatype: "boolean", multi: false}, - {id: FILTER_TITLE_CONTENT, filtervar: "title_content", datatype: "string", multi: false} + {id: FILTER_TITLE_CONTENT, filtervar: "title_content", datatype: "string", multi: false}, + + {id: FILTER_FULLTEXT_QUERY, filtervar: "query", datatype: "string", multi: false}, + + {id: FILTER_FULLTEXT_MORELIKE, filtervar: "more_like_id", datatype: "number", multi: false}, ] export interface FilterRuleType { diff --git a/src-ui/src/app/data/paperless-document.ts b/src-ui/src/app/data/paperless-document.ts index 9d0aeda88..e7412278b 100644 --- a/src-ui/src/app/data/paperless-document.ts +++ b/src-ui/src/app/data/paperless-document.ts @@ -4,6 +4,15 @@ import { PaperlessTag } from './paperless-tag' import { PaperlessDocumentType } from './paperless-document-type' import { Observable } from 'rxjs' +export interface SearchHit { + + score?: number + rank?: number + + highlights?: string + +} + export interface PaperlessDocument extends ObjectWithId { correspondent$?: Observable @@ -40,4 +49,6 @@ export interface PaperlessDocument extends ObjectWithId { archive_serial_number?: number + __search_hit__?: SearchHit + } diff --git a/src-ui/src/app/data/search-result.ts b/src-ui/src/app/data/search-result.ts deleted file mode 100644 index a769a8351..000000000 --- a/src-ui/src/app/data/search-result.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { PaperlessDocument } from './paperless-document' - -export class SearchHitHighlight { - text?: string - term?: number -} - -export interface SearchHit { - id?: number - title?: string - score?: number - rank?: number - - highlights?: SearchHitHighlight[][] - document?: PaperlessDocument -} - -export interface SearchResult { - - count?: number - page?: number - page_count?: number - - corrected_query?: string - - results?: SearchHit[] - - -} diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 334706a3c..d844323f9 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -1,7 +1,9 @@ +import { Route } from '@angular/compiler/src/core'; import { Injectable } from '@angular/core'; -import { Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { cloneFilterRules, FilterRule } from '../data/filter-rule'; +import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from '../data/filter-rule-type'; import { PaperlessDocument } from '../data/paperless-document'; import { PaperlessSavedView } from '../data/paperless-saved-view'; import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys'; @@ -207,7 +209,11 @@ export class DocumentListViewService { this.activeListViewState.currentPage = 1 this.reduceSelectionToFilter() this.saveDocumentListView() - this.router.navigate(["documents"]) + if (this.router.url == "/documents") { + this.reload() + } else { + this.router.navigate(["documents"]) + } } getLastPage(): number { @@ -317,7 +323,7 @@ export class DocumentListViewService { return this.documents.map(d => d.id).indexOf(documentID) } - constructor(private documentService: DocumentService, private settings: SettingsService, private router: Router) { + constructor(private documentService: DocumentService, private settings: SettingsService, private router: Router, private route: ActivatedRoute) { let documentListViewConfigJson = sessionStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) if (documentListViewConfigJson) { try { diff --git a/src-ui/src/app/services/rest/search.service.ts b/src-ui/src/app/services/rest/search.service.ts index e750100fa..f10c53485 100644 --- a/src-ui/src/app/services/rest/search.service.ts +++ b/src-ui/src/app/services/rest/search.service.ts @@ -2,8 +2,6 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { PaperlessDocument } from 'src/app/data/paperless-document'; -import { SearchResult } from 'src/app/data/search-result'; import { environment } from 'src/environments/environment'; import { DocumentService } from './document.service'; @@ -13,30 +11,7 @@ import { DocumentService } from './document.service'; }) export class SearchService { - constructor(private http: HttpClient, private documentService: DocumentService) { } - - search(query: string, page?: number, more_like?: number): Observable { - let httpParams = new HttpParams() - if (query) { - httpParams = httpParams.set('query', query) - } - if (page) { - httpParams = httpParams.set('page', page.toString()) - } - if (more_like) { - httpParams = httpParams.set('more_like', more_like.toString()) - } - return this.http.get(`${environment.apiBaseUrl}search/`, {params: httpParams}).pipe( - map(result => { - result.results.forEach(hit => { - if (hit.document) { - this.documentService.addObservablesToDocument(hit.document) - } - }) - return result - }) - ) - } + constructor(private http: HttpClient) { } autocomplete(term: string): Observable { return this.http.get(`${environment.apiBaseUrl}search/autocomplete/`, {params: new HttpParams().set('term', term)}) diff --git a/src/documents/index.py b/src/documents/index.py index 2c851c9ea..a75534514 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -5,12 +5,12 @@ from contextlib import contextmanager import math from django.conf import settings from whoosh import highlight, classify, query -from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME -from whoosh.highlight import Formatter, get_text +from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME, BOOLEAN +from whoosh.highlight import Formatter, get_text, HtmlFormatter from whoosh.index import create_in, exists_in, open_dir from whoosh.qparser import MultifieldParser from whoosh.qparser.dateparse import DateParserPlugin -from whoosh.searching import ResultsPage +from whoosh.searching import ResultsPage, Searcher from whoosh.writing import AsyncWriter from documents.models import Document @@ -18,63 +18,53 @@ from documents.models import Document logger = logging.getLogger("paperless.index") -class JsonFormatter(Formatter): - def __init__(self): - self.seen = {} - - def format_token(self, text, token, replace=False): - ttext = self._text(get_text(text, token, replace)) - return {'text': ttext, 'highlight': 'true'} - - def format_fragment(self, fragment, replace=False): - output = [] - index = fragment.startchar - text = fragment.text - amend_token = None - for t in fragment.matches: - if t.startchar is None: - continue - if t.startchar < index: - continue - if t.startchar > index: - text_inbetween = text[index:t.startchar] - if amend_token and t.startchar - index < 10: - amend_token['text'] += text_inbetween - else: - output.append({'text': text_inbetween, - 'highlight': False}) - amend_token = None - token = self.format_token(text, t, replace) - if amend_token: - amend_token['text'] += token['text'] - else: - output.append(token) - amend_token = token - index = t.endchar - if index < fragment.endchar: - output.append({'text': text[index:fragment.endchar], - 'highlight': False}) - return output - - def format(self, fragments, replace=False): - output = [] - for fragment in fragments: - output.append(self.format_fragment(fragment, replace=replace)) - return output - - def get_schema(): return Schema( - id=NUMERIC(stored=True, unique=True, numtype=int), - title=TEXT(stored=True), + id=NUMERIC( + stored=True, + unique=True + ), + title=TEXT( + sortable=True + ), content=TEXT(), - correspondent=TEXT(stored=True), - correspondent_id=NUMERIC(stored=True, numtype=int), - tag=KEYWORD(stored=True, commas=True, scorable=True, lowercase=True), - type=TEXT(stored=True), - created=DATETIME(stored=True, sortable=True), - modified=DATETIME(stored=True, sortable=True), - added=DATETIME(stored=True, sortable=True), + archive_serial_number=NUMERIC( + sortable=True + ), + + correspondent=TEXT( + sortable=True + ), + correspondent_id=NUMERIC(), + has_correspondent=BOOLEAN(), + + tag=KEYWORD( + commas=True, + scorable=True, + lowercase=True + ), + tag_id=KEYWORD( + commas=True, + scorable=True + ), + has_tag=BOOLEAN(), + + type=TEXT( + sortable=True + ), + type_id=NUMERIC(), + has_type=BOOLEAN(), + + created=DATETIME( + sortable=True + ), + modified=DATETIME( + sortable=True + ), + added=DATETIME( + sortable=True + ), + ) @@ -106,18 +96,38 @@ def open_index_writer(ix=None, optimize=False): writer.commit(optimize=optimize) +@contextmanager +def open_index_searcher(ix=None): + if ix: + searcher = ix.searcher() + else: + searcher = open_index().searcher() + + try: + yield searcher + finally: + searcher.close() + + def update_document(writer, doc): tags = ",".join([t.name for t in doc.tags.all()]) + tags_ids = ",".join([str(t.id) for t in doc.tags.all()]) writer.update_document( id=doc.pk, title=doc.title, content=doc.content, correspondent=doc.correspondent.name if doc.correspondent else None, correspondent_id=doc.correspondent.id if doc.correspondent else None, + has_correspondent=doc.correspondent is not None, tag=tags if tags else None, + tag_id=tags_ids if tags_ids else None, + has_tag=len(tags) > 0, type=doc.document_type.name if doc.document_type else None, + type_id=doc.document_type.id if doc.document_type else None, + has_type=doc.document_type is not None, created=doc.created, added=doc.added, + archive_serial_number=doc.archive_serial_number, modified=doc.modified, ) @@ -140,78 +150,11 @@ def remove_document_from_index(document): remove_document(writer, document) -@contextmanager -def query_page(ix, page, querystring, more_like_doc_id, more_like_doc_content): - searcher = ix.searcher() - try: - if querystring: - qp = MultifieldParser( - ["content", "title", "correspondent", "tag", "type"], - ix.schema) - qp.add_plugin(DateParserPlugin()) - str_q = qp.parse(querystring) - corrected = searcher.correct_query(str_q, querystring) - else: - str_q = None - corrected = None - - if more_like_doc_id: - docnum = searcher.document_number(id=more_like_doc_id) - kts = searcher.key_terms_from_text( - 'content', more_like_doc_content, numterms=20, - model=classify.Bo1Model, normalize=False) - more_like_q = query.Or( - [query.Term('content', word, boost=weight) - for word, weight in kts]) - result_page = searcher.search_page( - more_like_q, page, filter=str_q, mask={docnum}) - elif str_q: - result_page = searcher.search_page(str_q, page) - else: - raise ValueError( - "Either querystring or more_like_doc_id is required." - ) - - result_page.results.fragmenter = highlight.ContextFragmenter( - surround=50) - result_page.results.formatter = JsonFormatter() - - if corrected and corrected.query != str_q: - corrected_query = corrected.string - else: - corrected_query = None - - yield result_page, corrected_query - finally: - searcher.close() - - class DelayedQuery: @property def _query(self): - if 'query' in self.query_params: - qp = MultifieldParser( - ["content", "title", "correspondent", "tag", "type"], - self.ix.schema) - qp.add_plugin(DateParserPlugin()) - q = qp.parse(self.query_params['query']) - elif 'more_like_id' in self.query_params: - more_like_doc_id = int(self.query_params['more_like_id']) - content = Document.objects.get(id=more_like_doc_id).content - - docnum = self.searcher.document_number(id=more_like_doc_id) - kts = self.searcher.key_terms_from_text( - 'content', content, numterms=20, - model=classify.Bo1Model, normalize=False) - q = query.Or( - [query.Term('content', word, boost=weight) - for word, weight in kts]) - else: - raise ValueError( - "Either query or more_like_id is required." - ) - return q + raise NotImplementedError() @property def _query_filter(self): @@ -219,32 +162,114 @@ class DelayedQuery: for k, v in self.query_params.items(): if k == 'correspondent__id': criterias.append(query.Term('correspondent_id', v)) + elif k == 'tags__id__all': + for tag_id in v.split(","): + criterias.append(query.Term('tag_id', tag_id)) + elif k == 'document_type__id': + criterias.append(query.Term('type_id', v)) + elif k == 'correspondent__isnull': + criterias.append(query.Term("has_correspondent", v == "false")) + elif k == 'is_tagged': + criterias.append(query.Term("has_tag", v == "true")) + elif k == 'document_type__isnull': + criterias.append(query.Term("has_type", v == "false")) + elif k == 'created__date__lt': + pass + elif k == 'created__date__gt': + pass + elif k == 'added__date__gt': + pass + elif k == 'added__date__lt': + pass if len(criterias) > 0: return query.And(criterias) else: return None - def __init__(self, ix, searcher, query_params, page_size): - self.ix = ix + @property + def _query_sortedby(self): + if not 'ordering' in self.query_params: + return None, False + + o: str = self.query_params['ordering'] + if o.startswith('-'): + return o[1:], True + else: + return o, False + + def __init__(self, searcher: Searcher, query_params, page_size): self.searcher = searcher self.query_params = query_params self.page_size = page_size + self.saved_results = dict() def __len__(self): - results = self.searcher.search(self._query, limit=1, filter=self._query_filter) - return len(results) - #return 1000 + page = self[0:1] + return len(page) def __getitem__(self, item): + if item.start in self.saved_results: + return self.saved_results[item.start] + + q, mask = self._query + sortedby, reverse = self._query_sortedby + + print("OY", self.page_size) page: ResultsPage = self.searcher.search_page( - self._query, + q, + mask=mask, filter=self._query_filter, pagenum=math.floor(item.start / self.page_size) + 1, - pagelen=self.page_size + pagelen=self.page_size, + sortedby=sortedby, + reverse=reverse ) + page.results.fragmenter = highlight.ContextFragmenter( + surround=50) + page.results.formatter = HtmlFormatter(tagname="span", between=" ... ") + + self.saved_results[item.start] = page + return page +class DelayedFullTextQuery(DelayedQuery): + + @property + def _query(self): + q_str = self.query_params['query'] + qp = MultifieldParser( + ["content", "title", "correspondent", "tag", "type"], + self.searcher.ixreader.schema) + qp.add_plugin(DateParserPlugin()) + q = qp.parse(q_str) + + corrected = self.searcher.correct_query(q, q_str) + if corrected.query != q: + corrected_query = corrected.string + + return q, None + + +class DelayedMoreLikeThisQuery(DelayedQuery): + + @property + def _query(self): + more_like_doc_id = int(self.query_params['more_like_id']) + content = Document.objects.get(id=more_like_doc_id).content + + docnum = self.searcher.document_number(id=more_like_doc_id) + kts = self.searcher.key_terms_from_text( + 'content', content, numterms=20, + model=classify.Bo1Model, normalize=False) + q = query.Or( + [query.Term('content', word, boost=weight) + for word, weight in kts]) + mask = {docnum} + + return q, mask + + def autocomplete(ix, term, limit=10): with ix.reader() as reader: terms = [] diff --git a/src/documents/models.py b/src/documents/models.py index 6ee93e3ad..cdd35a2f7 100755 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -359,7 +359,10 @@ class SavedView(models.Model): sort_field = models.CharField( _("sort field"), - max_length=128) + max_length=128, + null=True, + blank=True + ) sort_reverse = models.BooleanField( _("sort reverse"), default=False) @@ -387,6 +390,8 @@ class SavedViewFilterRule(models.Model): (17, _("does not have tag")), (18, _("does not have ASN")), (19, _("title or content contains")), + (20, _("fulltext query")), + (21, _("more like this")) ] saved_view = models.ForeignKey( diff --git a/src/documents/tests/test_index.py b/src/documents/tests/test_index.py index 2baa9621d..14304ab28 100644 --- a/src/documents/tests/test_index.py +++ b/src/documents/tests/test_index.py @@ -1,20 +1,10 @@ from django.test import TestCase from documents import index -from documents.index import JsonFormatter from documents.models import Document from documents.tests.utils import DirectoriesMixin -class JsonFormatterTest(TestCase): - - def setUp(self) -> None: - self.formatter = JsonFormatter() - - def test_empty_fragments(self): - self.assertListEqual(self.formatter.format([]), []) - - class TestAutoComplete(DirectoriesMixin, TestCase): def test_auto_complete(self): diff --git a/src/documents/views.py b/src/documents/views.py index a29983738..f61933e16 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -36,7 +36,6 @@ from rest_framework.viewsets import ( from paperless.db import GnuPG from paperless.views import StandardPagination -from . import index from .bulk_download import OriginalAndArchiveStrategy, OriginalsOnlyStrategy, \ ArchiveOnlyStrategy from .classifier import load_classifier @@ -332,15 +331,23 @@ class SearchResultSerializer(DocumentSerializer): def to_representation(self, instance): doc = Document.objects.get(id=instance['id']) - # repressentation = super(SearchResultSerializer, self).to_representation(doc) - # repressentation['__search_hit__'] = { - # "score": instance.score - # } - return super(SearchResultSerializer, self).to_representation(doc) + representation = super(SearchResultSerializer, self).to_representation(doc) + representation['__search_hit__'] = { + "score": instance.score, + "highlights": instance.highlights("content", + text=doc.content) if doc else None, # NOQA: E501 + "rank": instance.rank + } + + return representation class UnifiedSearchViewSet(DocumentViewSet): + def __init__(self, *args, **kwargs): + super(UnifiedSearchViewSet, self).__init__(*args, **kwargs) + self.searcher = None + def get_serializer_class(self): if self._is_search_request(): return SearchResultSerializer @@ -348,25 +355,39 @@ class UnifiedSearchViewSet(DocumentViewSet): return DocumentSerializer def _is_search_request(self): - return "query" in self.request.query_params + return "query" in self.request.query_params or "more_like_id" in self.request.query_params def filter_queryset(self, queryset): - if self._is_search_request(): - ix = index.open_index() - return index.DelayedQuery(ix, self.searcher, self.request.query_params, self.paginator.page_size) + from documents import index + + if "query" in self.request.query_params: + query_class = index.DelayedFullTextQuery + elif "more_like_id" in self.request.query_params: + query_class = index.DelayedMoreLikeThisQuery + else: + raise ValueError() + + return query_class( + self.searcher, + self.request.query_params, + self.paginator.get_page_size(self.request)) else: return super(UnifiedSearchViewSet, self).filter_queryset(queryset) def list(self, request, *args, **kwargs): if self._is_search_request(): - ix = index.open_index() - with ix.searcher() as s: - self.searcher = s - return super(UnifiedSearchViewSet, self).list(request) + from documents import index + try: + with index.open_index_searcher() as s: + self.searcher = s + return super(UnifiedSearchViewSet, self).list(request) + except Exception as e: + return HttpResponseBadRequest(str(e)) else: return super(UnifiedSearchViewSet, self).list(request) + class LogViewSet(ViewSet): permission_classes = (IsAuthenticated,) @@ -518,74 +539,6 @@ class SelectionDataView(GenericAPIView): return r -class SearchView(APIView): - - permission_classes = (IsAuthenticated,) - - def add_infos_to_hit(self, r): - try: - doc = Document.objects.get(id=r['id']) - except Document.DoesNotExist: - logger.warning( - f"Search index returned a non-existing document: " - f"id: {r['id']}, title: {r['title']}. " - f"Search index needs reindex." - ) - doc = None - - return {'id': r['id'], - 'highlights': r.highlights("content", text=doc.content) if doc else None, # NOQA: E501 - 'score': r.score, - 'rank': r.rank, - 'document': DocumentSerializer(doc).data if doc else None, - 'title': r['title'] - } - - def get(self, request, format=None): - from documents import index - - if 'query' in request.query_params: - query = request.query_params['query'] - else: - query = None - - if 'more_like' in request.query_params: - more_like_id = request.query_params['more_like'] - more_like_content = Document.objects.get(id=more_like_id).content - else: - more_like_id = None - more_like_content = None - - if not query and not more_like_id: - return Response({ - 'count': 0, - 'page': 0, - 'page_count': 0, - 'corrected_query': None, - 'results': []}) - - try: - page = int(request.query_params.get('page', 1)) - except (ValueError, TypeError): - page = 1 - - if page < 1: - page = 1 - - ix = index.open_index() - - try: - with index.query_page(ix, page, query, more_like_id, more_like_content) as (result_page, corrected_query): # NOQA: E501 - return Response( - {'count': len(result_page), - 'page': result_page.pagenum, - 'page_count': result_page.pagecount, - 'corrected_query': corrected_query, - 'results': list(map(self.add_infos_to_hit, result_page))}) - except Exception as e: - return HttpResponseBadRequest(str(e)) - - class SearchAutoCompleteView(APIView): permission_classes = (IsAuthenticated,) diff --git a/src/paperless/urls.py b/src/paperless/urls.py index 176fce257..7521d49de 100755 --- a/src/paperless/urls.py +++ b/src/paperless/urls.py @@ -16,7 +16,6 @@ from documents.views import ( LogViewSet, TagViewSet, DocumentTypeViewSet, - SearchView, IndexView, SearchAutoCompleteView, StatisticsView, @@ -47,10 +46,6 @@ urlpatterns = [ SearchAutoCompleteView.as_view(), name="autocomplete"), - re_path(r"^search/", - SearchView.as_view(), - name="search"), - re_path(r"^statistics/", StatisticsView.as_view(), name="statistics"), From 391db73ea8b9d52c45ef79a1208ab77110537744 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 22:32:39 +0100 Subject: [PATCH 18/93] added pt-pt locale --- src-ui/angular.json | 1 + src-ui/messages.xlf | 28 ++++++++++----------- src-ui/src/app/app.module.ts | 1 + src-ui/src/app/services/settings.service.ts | 1 + src/locale/en_US/LC_MESSAGES/django.po | 12 ++++++--- src/paperless/settings.py | 1 + 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src-ui/angular.json b/src-ui/angular.json index 1e4403f79..342172931 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -21,6 +21,7 @@ "fr-FR": "src/locale/messages.fr_FR.xlf", "en-GB": "src/locale/messages.en_GB.xlf", "pt-BR": "src/locale/messages.pt_BR.xlf", + "pt-PT": "src/locale/messages.pt_PT.xlf", "it-IT": "src/locale/messages.it_IT.xlf", "ro-RO": "src/locale/messages.ro_RO.xlf", "ru-RU": "src/locale/messages.ru_RU.xlf", diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index b0c64256a..959d90a1b 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -1212,14 +1212,7 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 - - - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 + 51 @@ -1689,46 +1682,53 @@ 94 + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Italian src/app/services/settings.service.ts - 96 + 97 Romanian src/app/services/settings.service.ts - 97 + 98 Russian src/app/services/settings.service.ts - 98 + 99 Spanish src/app/services/settings.service.ts - 99 + 100 ISO 8601 src/app/services/settings.service.ts - 105 + 106 diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index c364424ad..ca87d1a07 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -81,6 +81,7 @@ registerLocaleData(localeFr) registerLocaleData(localeNl) registerLocaleData(localeDe) registerLocaleData(localePt, "pt-BR") +registerLocaleData(localePt, "pt-PT") registerLocaleData(localeIt) registerLocaleData(localeEnGb) registerLocaleData(localeRo) diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index dcc0a3148..ec07208dc 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -92,6 +92,7 @@ export class SettingsService { {code: "de-de", name: $localize`German`, englishName: "German", dateInputFormat: "dd.mm.yyyy"}, {code: "nl-nl", name: $localize`Dutch`, englishName: "Dutch", dateInputFormat: "dd-mm-yyyy"}, {code: "fr-fr", name: $localize`French`, englishName: "French", dateInputFormat: "dd/mm/yyyy"}, + {code: "pt-pt", name: $localize`Portuguese`, englishName: "Portuguese", dateInputFormat: "dd/mm/yyyy"}, {code: "pt-br", name: $localize`Portuguese (Brazil)`, englishName: "Portuguese (Brazil)", dateInputFormat: "dd/mm/yyyy"}, {code: "it-it", name: $localize`Italian`, englishName: "Italian", dateInputFormat: "dd/mm/yyyy"}, {code: "ro-ro", name: $localize`Romanian`, englishName: "Romanian", dateInputFormat: "dd.mm.yyyy"}, diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index 42fac1586..2a17fd9ae 100644 --- a/src/locale/en_US/LC_MESSAGES/django.po +++ b/src/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -433,18 +433,22 @@ msgid "Portuguese (Brazil)" msgstr "" #: paperless/settings.py:304 -msgid "Italian" +msgid "Portuguese" msgstr "" #: paperless/settings.py:305 -msgid "Romanian" +msgid "Italian" msgstr "" #: paperless/settings.py:306 -msgid "Russian" +msgid "Romanian" msgstr "" #: paperless/settings.py:307 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:308 msgid "Spanish" msgstr "" diff --git a/src/paperless/settings.py b/src/paperless/settings.py index 014f2e95d..1a033af38 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -301,6 +301,7 @@ LANGUAGES = [ ("nl-nl", _("Dutch")), ("fr-fr", _("French")), ("pt-br", _("Portuguese (Brazil)")), + ("pt-pt", _("Portuguese")), ("it-it", _("Italian")), ("ro-ro", _("Romanian")), ("ru-ru", _("Russian")), From 740237a8fa087ab13da71f1969d9f5e38d839c77 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 22:33:00 +0100 Subject: [PATCH 19/93] add migration --- .../migrations/1015_auto_20210317_1351.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/documents/migrations/1015_auto_20210317_1351.py diff --git a/src/documents/migrations/1015_auto_20210317_1351.py b/src/documents/migrations/1015_auto_20210317_1351.py new file mode 100644 index 000000000..b6dca444c --- /dev/null +++ b/src/documents/migrations/1015_auto_20210317_1351.py @@ -0,0 +1,23 @@ +# Generated by Django 3.1.7 on 2021-03-17 12:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '1014_auto_20210228_1614'), + ] + + operations = [ + migrations.AlterField( + model_name='savedview', + name='sort_field', + field=models.CharField(blank=True, max_length=128, null=True, verbose_name='sort field'), + ), + migrations.AlterField( + model_name='savedviewfilterrule', + name='rule_type', + field=models.PositiveIntegerField(choices=[(0, 'title contains'), (1, 'content contains'), (2, 'ASN is'), (3, 'correspondent is'), (4, 'document type is'), (5, 'is in inbox'), (6, 'has tag'), (7, 'has any tag'), (8, 'created before'), (9, 'created after'), (10, 'created year is'), (11, 'created month is'), (12, 'created day is'), (13, 'added before'), (14, 'added after'), (15, 'modified before'), (16, 'modified after'), (17, 'does not have tag'), (18, 'does not have ASN'), (19, 'title or content contains'), (20, 'fulltext query'), (21, 'more like this')], verbose_name='rule type'), + ), + ] From b39c3f7866e16997199f67b4a5f9268174f0f844 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 22:44:18 +0100 Subject: [PATCH 20/93] fixes #668 (see https://github.com/the-paperless-project/paperless/pull/571) --- src/documents/matching.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/documents/matching.py b/src/documents/matching.py index 3b70930b6..a1f3896e5 100644 --- a/src/documents/matching.py +++ b/src/documents/matching.py @@ -90,7 +90,7 @@ def matches(matching_model, document): elif matching_model.matching_algorithm == MatchingModel.MATCH_LITERAL: result = bool(re.search( - rf"\b{matching_model.match}\b", + rf"\b{re.escape(matching_model.match)}\b", document_content, **search_kwargs )) @@ -161,6 +161,9 @@ def _split_match(matching_model): findterms = re.compile(r'"([^"]+)"|(\S+)').findall normspace = re.compile(r"\s+").sub return [ - normspace(" ", (t[0] or t[1]).strip()).replace(" ", r"\s+") + # normspace(" ", (t[0] or t[1]).strip()).replace(" ", r"\s+") + re.escape( + normspace(" ", (t[0] or t[1]).strip()) + ).replace(r"\ ", r"\s+") for t in findterms(matching_model.match) ] From 9a04bc1bebfb0ba423ec83eb40e0c52108edd7d3 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 22:57:37 +0100 Subject: [PATCH 21/93] fixes #771 --- .../management/commands/document_exporter.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/documents/management/commands/document_exporter.py b/src/documents/management/commands/document_exporter.py index d8f5861a5..286d862e3 100644 --- a/src/documents/management/commands/document_exporter.py +++ b/src/documents/management/commands/document_exporter.py @@ -6,15 +6,18 @@ import time import tqdm from django.conf import settings +from django.contrib.auth.models import User from django.core import serializers from django.core.management.base import BaseCommand, CommandError from django.db import transaction from filelock import FileLock -from documents.models import Document, Correspondent, Tag, DocumentType +from documents.models import Document, Correspondent, Tag, DocumentType, \ + SavedView, SavedViewFilterRule from documents.settings import EXPORTER_FILE_NAME, EXPORTER_THUMBNAIL_NAME, \ EXPORTER_ARCHIVE_NAME from paperless.db import GnuPG +from paperless_mail.models import MailAccount, MailRule from ...file_handling import generate_filename, delete_empty_directories @@ -105,6 +108,21 @@ class Command(BaseCommand): serializers.serialize("json", documents)) manifest += document_manifest + manifest += json.loads(serializers.serialize( + "json", MailAccount.objects.all())) + + manifest += json.loads(serializers.serialize( + "json", MailRule.objects.all())) + + manifest += json.loads(serializers.serialize( + "json", SavedView.objects.all())) + + manifest += json.loads(serializers.serialize( + "json", SavedViewFilterRule.objects.all())) + + manifest += json.loads(serializers.serialize( + "json", User.objects.all())) + # 3. Export files from each document for index, document_dict in tqdm.tqdm(enumerate(document_manifest), total=len(document_manifest)): From 2fb1132b6988664cf8f4743dce3c74d566d7a622 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 17 Mar 2021 23:08:19 +0100 Subject: [PATCH 22/93] fix test case --- src/documents/tests/test_management_exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/tests/test_management_exporter.py b/src/documents/tests/test_management_exporter.py index cdc745305..9e2dd0804 100644 --- a/src/documents/tests/test_management_exporter.py +++ b/src/documents/tests/test_management_exporter.py @@ -69,7 +69,7 @@ class TestExportImport(DirectoriesMixin, TestCase): manifest = self._do_export(use_filename_format=use_filename_format) - self.assertEqual(len(manifest), 7) + self.assertEqual(len(manifest), 8) self.assertEqual(len(list(filter(lambda e: e['model'] == 'documents.document', manifest))), 4) self.assertTrue(os.path.exists(os.path.join(self.target, "manifest.json"))) From b6111d8da65369b961e06ceb6111f937d523d630 Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 18 Mar 2021 16:22:45 +0100 Subject: [PATCH 23/93] New Crowdin updates (#788) --- src-ui/src/locale/messages.cs_CZ.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.de_DE.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.en_GB.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.es_ES.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.fr_FR.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.hu_HU.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.it_IT.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.nl_NL.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.pt_BR.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.pt_PT.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.ro_RO.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.ru_RU.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.xh_ZA.xlf | 30 +++++++++++++------------- src-ui/src/locale/messages.zh_CN.xlf | 30 +++++++++++++------------- src/locale/cs_CZ/LC_MESSAGES/django.po | 14 +++++++----- src/locale/de_DE/LC_MESSAGES/django.po | 14 +++++++----- src/locale/en_GB/LC_MESSAGES/django.po | 14 +++++++----- src/locale/es_ES/LC_MESSAGES/django.po | 14 +++++++----- src/locale/fr_FR/LC_MESSAGES/django.po | 14 +++++++----- src/locale/hu_HU/LC_MESSAGES/django.po | 14 +++++++----- src/locale/it_IT/LC_MESSAGES/django.po | 14 +++++++----- src/locale/nl_NL/LC_MESSAGES/django.po | 14 +++++++----- src/locale/pt_BR/LC_MESSAGES/django.po | 14 +++++++----- src/locale/pt_PT/LC_MESSAGES/django.po | 14 +++++++----- src/locale/ro_RO/LC_MESSAGES/django.po | 14 +++++++----- src/locale/ru_RU/LC_MESSAGES/django.po | 14 +++++++----- src/locale/xh_ZA/LC_MESSAGES/django.po | 14 +++++++----- src/locale/zh_CN/LC_MESSAGES/django.po | 14 +++++++----- 28 files changed, 336 insertions(+), 280 deletions(-) diff --git a/src-ui/src/locale/messages.cs_CZ.xlf b/src-ui/src/locale/messages.cs_CZ.xlf index d0f519a70..c24654569 100644 --- a/src-ui/src/locale/messages.cs_CZ.xlf +++ b/src-ui/src/locale/messages.cs_CZ.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 View - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Created: - Filter by correspondent @@ -1929,11 +1921,19 @@ Francouzština + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portuguese (Brazil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italian @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romanian @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russian @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.de_DE.xlf b/src-ui/src/locale/messages.de_DE.xlf index e9f8ddbc5..1d7a3e918 100644 --- a/src-ui/src/locale/messages.de_DE.xlf +++ b/src-ui/src/locale/messages.de_DE.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Anzeigen - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Erstellt: - Filter by correspondent @@ -1929,11 +1921,19 @@ Französisch + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portugiesisch + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portugiesisch (Brasilien) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italienisch @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Rumänisch @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russisch @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanisch @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.en_GB.xlf b/src-ui/src/locale/messages.en_GB.xlf index 76b0c8ab6..060411de2 100644 --- a/src-ui/src/locale/messages.en_GB.xlf +++ b/src-ui/src/locale/messages.en_GB.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 View - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Created: - Filter by correspondent @@ -1929,11 +1921,19 @@ French + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portuguese (Brazil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italian @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romanian @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russian @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.es_ES.xlf b/src-ui/src/locale/messages.es_ES.xlf index 46b3e3d10..b743b8a83 100644 --- a/src-ui/src/locale/messages.es_ES.xlf +++ b/src-ui/src/locale/messages.es_ES.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Vista - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Creado: - Filter by correspondent @@ -1929,11 +1921,19 @@ Francés + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portugués (Brasil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiano @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Rumano @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Ruso @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Español @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.fr_FR.xlf b/src-ui/src/locale/messages.fr_FR.xlf index f0aaab1f9..d3103a6ad 100644 --- a/src-ui/src/locale/messages.fr_FR.xlf +++ b/src-ui/src/locale/messages.fr_FR.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Vue - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Créé le : - Filter by correspondent @@ -1929,11 +1921,19 @@ Français + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portugais + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portugais (Brésil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italien @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Roumain @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russe @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Espagnol @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.hu_HU.xlf b/src-ui/src/locale/messages.hu_HU.xlf index 1411bcdba..218e4fa98 100644 --- a/src-ui/src/locale/messages.hu_HU.xlf +++ b/src-ui/src/locale/messages.hu_HU.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Megtekint - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Létrehozva: - Filter by correspondent @@ -1929,11 +1921,19 @@ French + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portuguese (Brazil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italian @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romanian @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russian @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.it_IT.xlf b/src-ui/src/locale/messages.it_IT.xlf index 598d25095..c41ed083d 100644 --- a/src-ui/src/locale/messages.it_IT.xlf +++ b/src-ui/src/locale/messages.it_IT.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Mostra - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Creato il: - Filter by correspondent @@ -1929,11 +1921,19 @@ Francese + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portoghese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portoghese (Brasile) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiano @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Rumeno @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russo @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spagnolo @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index 796ba8f62..647a8de2b 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Bekijken - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Aangemaakt op: - Filter by correspondent @@ -1929,11 +1921,19 @@ Frans + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portugees (Brazilië) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiaans @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Roemeens @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russisch @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spaans @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.pt_BR.xlf b/src-ui/src/locale/messages.pt_BR.xlf index 70994baef..c95ae9670 100644 --- a/src-ui/src/locale/messages.pt_BR.xlf +++ b/src-ui/src/locale/messages.pt_BR.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Ver - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Criado: - Filter by correspondent @@ -1929,11 +1921,19 @@ Francês + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Português (Brasil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiano @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romeno @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russian @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.pt_PT.xlf b/src-ui/src/locale/messages.pt_PT.xlf index 9a12e56a7..98de03004 100644 --- a/src-ui/src/locale/messages.pt_PT.xlf +++ b/src-ui/src/locale/messages.pt_PT.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Ver - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Criado: - Filter by correspondent @@ -1929,11 +1921,19 @@ Francês + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Português (Brasil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiano @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romeno @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russo @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Espanhol @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.ro_RO.xlf b/src-ui/src/locale/messages.ro_RO.xlf index f942b52d9..c434c30bf 100644 --- a/src-ui/src/locale/messages.ro_RO.xlf +++ b/src-ui/src/locale/messages.ro_RO.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Vizualizare - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Creat: - Filter by correspondent @@ -1929,11 +1921,19 @@ Franceză + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portugheză + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portugheză (Brazilia) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italiană @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Română @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Rusă @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.ru_RU.xlf b/src-ui/src/locale/messages.ru_RU.xlf index 5b0ad2a2a..c2736233c 100644 --- a/src-ui/src/locale/messages.ru_RU.xlf +++ b/src-ui/src/locale/messages.ru_RU.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 Представление - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Создано: - Filter by correspondent @@ -1929,11 +1921,19 @@ French + + Portuguese + + src/app/services/settings.service.ts + 95 + + Португальский + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portuguese (Brazil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italian @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romanian @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Русский @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Испанский @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src-ui/src/locale/messages.xh_ZA.xlf b/src-ui/src/locale/messages.xh_ZA.xlf index 8b4bd47f3..2d759ed8a 100644 --- a/src-ui/src/locale/messages.xh_ZA.xlf +++ b/src-ui/src/locale/messages.xh_ZA.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 crwdns3178:0crwdne3178:0 - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - crwdns3180:0{{document.created | customDate}}crwdne3180:0 - Filter by correspondent @@ -1929,11 +1921,19 @@ crwdns3314:0crwdne3314:0 + + Portuguese + + src/app/services/settings.service.ts + 95 + + crwdns3422:0crwdne3422:0 + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 crwdns3316:0crwdne3316:0 @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 crwdns3318:0crwdne3318:0 @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 crwdns3320:0crwdne3320:0 @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 crwdns3404:0crwdne3404:0 @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 crwdns3418:0crwdne3418:0 @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 crwdns3322:0crwdne3322:0 diff --git a/src-ui/src/locale/messages.zh_CN.xlf b/src-ui/src/locale/messages.zh_CN.xlf index 87916ccc5..a40acabe4 100644 --- a/src-ui/src/locale/messages.zh_CN.xlf +++ b/src-ui/src/locale/messages.zh_CN.xlf @@ -1384,18 +1384,10 @@ View src/app/components/document-list/document-card-large/document-card-large.component.html - 52 + 51 View - - Created: - - src/app/components/document-list/document-card-large/document-card-large.component.html - 71 - - Created: - Filter by correspondent @@ -1929,11 +1921,19 @@ French + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portuguese + Portuguese (Brazil) src/app/services/settings.service.ts - 95 + 96 Portuguese (Brazil) @@ -1941,7 +1941,7 @@ Italian src/app/services/settings.service.ts - 96 + 97 Italian @@ -1949,7 +1949,7 @@ Romanian src/app/services/settings.service.ts - 97 + 98 Romanian @@ -1957,7 +1957,7 @@ Russian src/app/services/settings.service.ts - 98 + 99 Russian @@ -1965,7 +1965,7 @@ Spanish src/app/services/settings.service.ts - 99 + 100 Spanish @@ -1973,7 +1973,7 @@ ISO 8601 src/app/services/settings.service.ts - 105 + 106 ISO 8601 diff --git a/src/locale/cs_CZ/LC_MESSAGES/django.po b/src/locale/cs_CZ/LC_MESSAGES/django.po index a869dfffe..81c089a9c 100644 --- a/src/locale/cs_CZ/LC_MESSAGES/django.po +++ b/src/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:58\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "" #: paperless/settings.py:304 -msgid "Italian" +msgid "Portuguese" msgstr "" #: paperless/settings.py:305 -msgid "Romanian" +msgid "Italian" msgstr "" #: paperless/settings.py:306 -msgid "Russian" +msgid "Romanian" msgstr "" #: paperless/settings.py:307 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:308 msgid "Spanish" msgstr "" diff --git a/src/locale/de_DE/LC_MESSAGES/django.po b/src/locale/de_DE/LC_MESSAGES/django.po index 5f681f78f..fccea1562 100644 --- a/src/locale/de_DE/LC_MESSAGES/django.po +++ b/src/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:58\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-18 13:43\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portugiesisch (Brasilien)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portugiesisch" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italienisch" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Rumänisch" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russisch" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Spanisch" diff --git a/src/locale/en_GB/LC_MESSAGES/django.po b/src/locale/en_GB/LC_MESSAGES/django.po index 90a8d2a90..d33b4fc32 100644 --- a/src/locale/en_GB/LC_MESSAGES/django.po +++ b/src/locale/en_GB/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 20:04\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 22:42\n" "Last-Translator: \n" "Language-Team: English, United Kingdom\n" "Language: en_GB\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portuguese (Brazil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portuguese" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italian" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Romanian" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russian" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Spanish" diff --git a/src/locale/es_ES/LC_MESSAGES/django.po b/src/locale/es_ES/LC_MESSAGES/django.po index 9f1a8a8b3..8a157440b 100644 --- a/src/locale/es_ES/LC_MESSAGES/django.po +++ b/src/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 20:04\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portugués (Brasil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Rumano" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Ruso" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Español" diff --git a/src/locale/fr_FR/LC_MESSAGES/django.po b/src/locale/fr_FR/LC_MESSAGES/django.po index b157c8857..c36430f34 100644 --- a/src/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 20:04\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-18 07:48\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portugais (Brésil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portugais" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italien" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Roumain" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russe" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Espagnol" diff --git a/src/locale/hu_HU/LC_MESSAGES/django.po b/src/locale/hu_HU/LC_MESSAGES/django.po index a0aeaa31b..7c3e637ee 100644 --- a/src/locale/hu_HU/LC_MESSAGES/django.po +++ b/src/locale/hu_HU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "" #: paperless/settings.py:304 -msgid "Italian" +msgid "Portuguese" msgstr "" #: paperless/settings.py:305 -msgid "Romanian" +msgid "Italian" msgstr "" #: paperless/settings.py:306 -msgid "Russian" +msgid "Romanian" msgstr "" #: paperless/settings.py:307 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:308 msgid "Spanish" msgstr "" diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index a7d02824b..48dfe762e 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 18:56\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-18 00:34\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portoghese (Brasile)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portoghese" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Rumeno" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russo" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Spagnolo" diff --git a/src/locale/nl_NL/LC_MESSAGES/django.po b/src/locale/nl_NL/LC_MESSAGES/django.po index 72dc77e0c..fa57cd6aa 100644 --- a/src/locale/nl_NL/LC_MESSAGES/django.po +++ b/src/locale/nl_NL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 15:58\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portugees (Brazilië)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiaans" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Roemeens" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russisch" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Spaans" diff --git a/src/locale/pt_BR/LC_MESSAGES/django.po b/src/locale/pt_BR/LC_MESSAGES/django.po index 2f2e9c875..84d1c2c54 100644 --- a/src/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Romeno" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "" diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index 8584309ec..a22858ce4 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-16 22:35\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:48\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Romeno" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Russo" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Espanhol" diff --git a/src/locale/ro_RO/LC_MESSAGES/django.po b/src/locale/ro_RO/LC_MESSAGES/django.po index 20918db1d..70194eff5 100644 --- a/src/locale/ro_RO/LC_MESSAGES/django.po +++ b/src/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 22:42\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portugheză (Brazilia)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portugheză" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italiană" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Română" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Rusă" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "" diff --git a/src/locale/ru_RU/LC_MESSAGES/django.po b/src/locale/ru_RU/LC_MESSAGES/django.po index 628bbfa15..bc5de736b 100644 --- a/src/locale/ru_RU/LC_MESSAGES/django.po +++ b/src/locale/ru_RU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-15 17:33\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 22:42\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "Portuguese (Brazil)" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Португальский" + +#: paperless/settings.py:305 msgid "Italian" msgstr "Italian" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "Romanian" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "Русский" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "Испанский" diff --git a/src/locale/xh_ZA/LC_MESSAGES/django.po b/src/locale/xh_ZA/LC_MESSAGES/django.po index 5b3f83e84..149e2b7ad 100644 --- a/src/locale/xh_ZA/LC_MESSAGES/django.po +++ b/src/locale/xh_ZA/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:47\n" "Last-Translator: \n" "Language-Team: Xhosa\n" "Language: xh_ZA\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "crwdns2726:0crwdne2726:0" #: paperless/settings.py:304 +msgid "Portuguese" +msgstr "crwdns3424:0crwdne3424:0" + +#: paperless/settings.py:305 msgid "Italian" msgstr "crwdns2728:0crwdne2728:0" -#: paperless/settings.py:305 +#: paperless/settings.py:306 msgid "Romanian" msgstr "crwdns2730:0crwdne2730:0" -#: paperless/settings.py:306 +#: paperless/settings.py:307 msgid "Russian" msgstr "crwdns3414:0crwdne3414:0" -#: paperless/settings.py:307 +#: paperless/settings.py:308 msgid "Spanish" msgstr "crwdns3420:0crwdne3420:0" diff --git a/src/locale/zh_CN/LC_MESSAGES/django.po b/src/locale/zh_CN/LC_MESSAGES/django.po index c6c59ecf7..2c7ae4244 100644 --- a/src/locale/zh_CN/LC_MESSAGES/django.po +++ b/src/locale/zh_CN/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-14 13:33+0100\n" -"PO-Revision-Date: 2021-03-14 13:57\n" +"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"PO-Revision-Date: 2021-03-17 21:48\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -429,18 +429,22 @@ msgid "Portuguese (Brazil)" msgstr "" #: paperless/settings.py:304 -msgid "Italian" +msgid "Portuguese" msgstr "" #: paperless/settings.py:305 -msgid "Romanian" +msgid "Italian" msgstr "" #: paperless/settings.py:306 -msgid "Russian" +msgid "Romanian" msgstr "" #: paperless/settings.py:307 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:308 msgid "Spanish" msgstr "" From ce2bae12af03a30f74fc53d9f940415ee893ae60 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 18 Mar 2021 19:13:45 +0100 Subject: [PATCH 24/93] changelog and version bump --- docs/changelog.rst | 15 +++++++++++++++ src-ui/src/environments/environment.prod.ts | 2 +- src/paperless/version.py | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index bf083e8b7..7010350a8 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,21 @@ Changelog ********* +paperless-ng 1.3.2 +################## + +* Added translation into Portuguese. + +* Changes + + * The exporter now exports user accounts, mail accounts, mail rules and saved views as well. + +* Fixes + + * Minor layout issues with document cards and the log viewer. + + * Fixed an issue with any/all/exact matching when characters used in regular expressions were used for the match. + paperless-ng 1.3.1 ################## diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index 82a55b979..acc5843f8 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -3,7 +3,7 @@ export const environment = { apiBaseUrl: "/api/", apiVersion: "2", appTitle: "Paperless-ng", - version: "1.3.1", + version: "1.3.2", webSocketHost: window.location.host, webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:") }; diff --git a/src/paperless/version.py b/src/paperless/version.py index cb3d5bf5f..183d98d3f 100644 --- a/src/paperless/version.py +++ b/src/paperless/version.py @@ -1 +1 @@ -__version__ = (1, 3, 1) +__version__ = (1, 3, 2) From 8f6e1360e1791af36e581edba40ec96f767a5511 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 18 Mar 2021 23:49:49 +0100 Subject: [PATCH 25/93] update requirements --- Pipfile | 5 +- Pipfile.lock | 487 +++++++++++++++++++++++------------------------ requirements.txt | 24 +-- 3 files changed, 257 insertions(+), 259 deletions(-) diff --git a/Pipfile b/Pipfile index 4d9836e68..587872860 100644 --- a/Pipfile +++ b/Pipfile @@ -24,9 +24,8 @@ langdetect = "*" # numpy 1.20.0 drops python 3.6 support numpy = "~=1.19.5" pathvalidate = "*" -# pinned to 8.1.0, since aarch64 wheels might not be available beyond that https://github.com/python-pillow/Pillow/issues/5202 -pillow = "==8.1.0" -pikepdf = "~=2.5.0" +pillow = "~=8.1.0" +pikepdf = "~=2.5" python-gnupg = "*" python-dotenv = "*" python-dateutil = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 98d8655eb..33fae8d40 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "49f8a0718a7982bc4ca7e1315c17849523b0d29c38f13cff88f8f883e0e9943a" + "sha256": "50d92219dc02e7b3fdc2cd769ee4d838ff69da45ed9b06b54990e7a937cc2e9d" }, "pipfile-spec": 6, "requires": {}, @@ -28,11 +28,11 @@ }, "arrow": { "hashes": [ - "sha256:7909d9fd30d32fa8fd173fdeb3f7125aaf6dedd1a837276fe1d8cea2c0e86d76", - "sha256:b1e106a0ab754e540f4aeb08747900830b688adef02d81240e65afc0e781a870" + "sha256:3515630f11a15c61dcb4cdd245883270dd334c83f3e639824e65a4b79cc48543", + "sha256:399c9c8ae732270e1aa58ead835a79a40d7be8aa109c579898eb41029b5a231d" ], "markers": "python_version >= '3.6'", - "version": "==1.0.1" + "version": "==1.0.3" }, "asgiref": { "hashes": [ @@ -60,11 +60,11 @@ }, "autobahn": { "hashes": [ - "sha256:884f79c50fdc55ade2c315946a9caa145e8b10075eee9d2c2594ea5e8f5226aa", - "sha256:bf7a9d302a34d0f719d43c57f65ca1f2f5c982dd6ea0c11e1e190ef6f43710fe" + "sha256:9195df8af03b0ff29ccd4b7f5abbde957ee90273465942205f9a1bad6c3f07ac", + "sha256:e126c1f583e872fb59e79d36977cfa1f2d0a8a79f90ae31f406faae7664b8e03" ], "markers": "python_version >= '3.7'", - "version": "==21.2.2" + "version": "==21.3.1" }, "automat": { "hashes": [ @@ -413,11 +413,11 @@ }, "imap-tools": { "hashes": [ - "sha256:44641716f0c5c07df78c5713405675fac50220d4f8e2906c9ed4aabd9c356fa8", - "sha256:bab9a6edf848a58bdd3959ba55e0eb75039ff188a3779371d0b8db674a4945e8" + "sha256:00fa5b5046c0437976ad7dd5e45b1847bfd5d14bb858c9b19a5cf2994bba96d9", + "sha256:3b4d0a911bc48ea7c0beac6a15b6f65b6fdf2b066a67cd3536253ec98e401e83" ], "index": "pypi", - "version": "==0.38.1" + "version": "==0.39.0" }, "img2pdf": { "hashes": [ @@ -428,10 +428,10 @@ }, "incremental": { "hashes": [ - "sha256:717e12246dddf231a349175f48d74d93e2897244939173b01974ab6661406b9f", - "sha256:7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3" + "sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57", + "sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321" ], - "version": "==17.5.0" + "version": "==21.3.0" }, "inotify-simple": { "hashes": [ @@ -589,11 +589,11 @@ }, "ocrmypdf": { "hashes": [ - "sha256:2fca4046e3a33e5902dd89c3003a3f31c7d584dc43f14c7c97f57fce20d2e469", - "sha256:5c386fcf2c0f2635533c2bad0edcd2d455f667a134d180dc61cbb3d4d5f0c8e2" + "sha256:2d2c9efd3443e3fc3e852aea572b8d82bcdf24081c7cc74d760ae4064859bb54", + "sha256:a403699d54d63ff32ebc117ce5dde4d3c870ab69d5ef3e63c24ef12bc7b9b7e9" ], "index": "pypi", - "version": "==11.7.0" + "version": "==11.7.1" }, "pathvalidate": { "hashes": [ @@ -613,71 +613,72 @@ }, "pikepdf": { "hashes": [ - "sha256:02815df9499d3a6dfac2e07e4d2fdbe25fcbefae208970e76bff90af4a402d49", - "sha256:06b0c3004cc9e9068ebc62bb59c3c3a54e7af13867f4a326690d79c69a1cf288", - "sha256:1a471c6ca288fbcd0e1b0e128ef12bb14c5e7db745786308ba292fc7cff30bb5", - "sha256:489ed0fd1281beb0343a34fe8b9d94407c440ed0419ab2e6f5ea297a41824a31", - "sha256:5106b27f7085ed449e057b9988f07c80a87292d2bf46c585a8635ac7a3ccf0d5", - "sha256:51acffba6f3d21674eea7a0432ce1adaf0743641d57844a5e3dc92b4a7e81c85", - "sha256:53d694d70dd072a47bd2dd71329dcef0f809dcd8084d1d11c31baf3b64cd345c", - "sha256:6a640fef52dc785abd354d6800a52ecc02656c98dbfc2ecde559323b001bd43f", - "sha256:7006ef95f847412605dea6e772019f637949eaeaf65363d5d6afd9aa96bf5623", - "sha256:81e13b62877dbc089095e7efa03c27834bdf6b49d404d064cb227b0e179ce049", - "sha256:8fc3e97b24dafbd4b1ac057c8f144c18467ce55d342a1a8c42688890ead58ef3", - "sha256:9158dc4d3ef4e2301fb1879d5825530fdb32143ced770d60fa8e5badeee70a35", - "sha256:961337a10b42bd656b59116ce1c574eafd515b45a513221df6ae1f11734bfb6c", - "sha256:994ccac972357a7b9b147217e1beea2f7688697944b862dbb2a3e64aa9a5ff14", - "sha256:a8e9abf7db0351357b55c3f935979e7dc14f3f259a25d15bcc86abce730955a7", - "sha256:b836eda7f70b9dd75ccdeaf4e78b38393118a66821a69a10054b1430f945d1fd", - "sha256:b859a225f6bd953472c50f4df612b4575df646e560189e3720310ad65b6805a0", - "sha256:cae106bd461cfad73c554c09f6db1d5f2c6a28f5b8cb0602b63046840f488226", - "sha256:cdc75b8fa5a650f4fc91214a315358fde7470e09b95a00981b73a7c4ac5ddb97", - "sha256:e2c28da4f37ad9a3efbedbbfc6f1084941bde43903d30dfdbb338d5ba94c9f50", - "sha256:e596bd8fdbf40bfb8dc8068cdbc7e5b72052188d1ad8ca84da9d6b77658a8b31", - "sha256:ee957b9c60b6def20cbdf656d35859ce211eec02dafa3abb9d5ca937d32a3c3b", - "sha256:f9428d4b1f70af4f4560be4dccbbc5ab5308c00c5b62ed2f1c44ce9e2591b3d2" + "sha256:02a5c06c386c09f513806a200765855936e02c6952a67eb5c62b13f36b047f2a", + "sha256:064b337f627d9907cbaf3c71b8615ad773dd9c21766c29e1ae6816f971ef03e0", + "sha256:0ad9d95739f41b563812fb01d061a8abd45fcc548722b5d9ca50ffe28ce68a1c", + "sha256:12f471bb9121bdd2cf3311a59ce85776e55382c351092ab5678d4a3f71909b05", + "sha256:1c27ac02436c9d2e4b5f4fd172803b66c4eff08e529b7aafae8a08bd3354efcf", + "sha256:25c55249ecb40172f4e90710e1713f8dc46c99f988bbd760381bc7f5a91fa4b1", + "sha256:4906716a42e52900c0004217f910f5315e7e1ad0ad0501d4b0eed074185a3b3c", + "sha256:72517071904cb7ccc370217f5273e6a05683367927c5655e41428bb48304367c", + "sha256:8926bb4fa179a84c92921bf06b36a6c2c96f0c97b433e093090cfdda448d6d22", + "sha256:9a710b194449e577844453e2a55a63fdeb93ace87e498f17b36ea0c056ad8338", + "sha256:9db001ffaaf809b4f5553e5b06c62a0b89ccae64909a36b560e50b191bca51c2", + "sha256:a9dbd2bb52fcdecb066c99cacf96f0ebb40edee50d8885502a5a22d7f723a8b7", + "sha256:af0b95a410ace5ce7e5026bbb55645e7a9a471a320df8794b72c99f721be66cc", + "sha256:b52d983c41f12b69ccb6b4589d73d37734a81883761338994f03f3692728f776", + "sha256:c5626e87568fa9008396783480985c142fe24a5cf92e6104a56acdca09ac7cb5", + "sha256:c8c8aab370a7e44e78b56dab7edbda5d1695ae2a78ec38a64d3ba8f042767d4a", + "sha256:cc5d090f99306807be6c81a8b5f1ed09cafa5d0aa8e1df98046650d7dc8518fa", + "sha256:d1afed38b72e6454dc54d609c507dd0f4ff6a071da43cd5b5d0c574608e5e686", + "sha256:e1ed96cd5dacb796af6e28b4272c1840a8073206c6f830172db1609be12bd5a0", + "sha256:e9d0a7ed96550c184c1a2411dbb7c0a67b507d3da46c1d10d745407875048a9e", + "sha256:f01ec3c29a1f8554ba1b1d83f907fb7d71d79f8e362643db7804ad46362dae51", + "sha256:f26b003d9d6d0d577d14f769199b7886492bc1d9115fb0cf127eec7f7d4347ac", + "sha256:f823f2ff40074fae0a52b4c7af120ec101a0a6c572f1717e5bf094e0196464e8" ], "index": "pypi", - "version": "==2.5.2" + "version": "==2.9.0" }, "pillow": { "hashes": [ - "sha256:165c88bc9d8dba670110c689e3cc5c71dbe4bfb984ffa7cbebf1fac9554071d6", - "sha256:1d208e670abfeb41b6143537a681299ef86e92d2a3dac299d3cd6830d5c7bded", - "sha256:22d070ca2e60c99929ef274cfced04294d2368193e935c5d6febfd8b601bf865", - "sha256:2353834b2c49b95e1313fb34edf18fca4d57446675d05298bb694bca4b194174", - "sha256:39725acf2d2e9c17356e6835dccebe7a697db55f25a09207e38b835d5e1bc032", - "sha256:3de6b2ee4f78c6b3d89d184ade5d8fa68af0848f9b6b6da2b9ab7943ec46971a", - "sha256:47c0d93ee9c8b181f353dbead6530b26980fe4f5485aa18be8f1fd3c3cbc685e", - "sha256:5e2fe3bb2363b862671eba632537cd3a823847db4d98be95690b7e382f3d6378", - "sha256:604815c55fd92e735f9738f65dabf4edc3e79f88541c221d292faec1904a4b17", - "sha256:6c5275bd82711cd3dcd0af8ce0bb99113ae8911fc2952805f1d012de7d600a4c", - "sha256:731ca5aabe9085160cf68b2dbef95fc1991015bc0a3a6ea46a371ab88f3d0913", - "sha256:7612520e5e1a371d77e1d1ca3a3ee6227eef00d0a9cddb4ef7ecb0b7396eddf7", - "sha256:7916cbc94f1c6b1301ac04510d0881b9e9feb20ae34094d3615a8a7c3db0dcc0", - "sha256:81c3fa9a75d9f1afafdb916d5995633f319db09bd773cb56b8e39f1e98d90820", - "sha256:887668e792b7edbfb1d3c9d8b5d8c859269a0f0eba4dda562adb95500f60dbba", - "sha256:8c183b5c60544b49e0a66f924b18c526dfd37774811b627f70836fe01711abd3", - "sha256:93a473b53cc6e0b3ce6bf51b1b95b7b1e7e6084be3a07e40f79b42e83503fbf2", - "sha256:96d4dc103d1a0fa6d47c6c55a47de5f5dafd5ef0114fa10c85a1fd8e0216284b", - "sha256:a3d3e086474ef12ef13d42e5f9b7bbf09d39cf6bd4940f982263d6954b13f6a9", - "sha256:b02a0b9f332086657852b1f7cb380f6a42403a6d9c42a4c34a561aa4530d5234", - "sha256:b09e10ec453de97f9a23a5aa5e30b334195e8d2ddd1ce76cc32e52ba63c8b31d", - "sha256:b6f00ad5ebe846cc91763b1d0c6d30a8042e02b2316e27b05de04fa6ec831ec5", - "sha256:bba80df38cfc17f490ec651c73bb37cd896bc2400cfba27d078c2135223c1206", - "sha256:c3d911614b008e8a576b8e5303e3db29224b455d3d66d1b2848ba6ca83f9ece9", - "sha256:ca20739e303254287138234485579b28cb0d524401f83d5129b5ff9d606cb0a8", - "sha256:cb192176b477d49b0a327b2a5a4979552b7a58cd42037034316b8018ac3ebb59", - "sha256:cdbbe7dff4a677fb555a54f9bc0450f2a21a93c5ba2b44e09e54fcb72d2bd13d", - "sha256:cf6e33d92b1526190a1de904df21663c46a456758c0424e4f947ae9aa6088bf7", - "sha256:d355502dce85ade85a2511b40b4c61a128902f246504f7de29bbeec1ae27933a", - "sha256:d673c4990acd016229a5c1c4ee8a9e6d8f481b27ade5fc3d95938697fa443ce0", - "sha256:dc577f4cfdda354db3ae37a572428a90ffdbe4e51eda7849bf442fb803f09c9b", - "sha256:dd9eef866c70d2cbbea1ae58134eaffda0d4bfea403025f4db6859724b18ab3d", - "sha256:f50e7a98b0453f39000619d845be8b06e611e56ee6e8186f7f60c3b1e2f0feae" + "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af", + "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1", + "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c", + "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55", + "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060", + "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e", + "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8", + "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e", + "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0", + "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328", + "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238", + "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733", + "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03", + "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06", + "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71", + "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b", + "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6", + "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910", + "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce", + "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28", + "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d", + "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb", + "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6", + "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09", + "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be", + "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0", + "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44", + "sha256:bd08a7e01d388c5e0b5b46b52081e01dc96ef226aeed13fa1d7af94b81d4e93b", + "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1", + "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341", + "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34", + "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2", + "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a", + "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5" ], "index": "pypi", - "version": "==8.1.0" + "version": "==8.1.2" }, "pluggy": { "hashes": [ @@ -808,11 +809,11 @@ }, "python-gnupg": { "hashes": [ - "sha256:3aa0884b3bd414652c2385b9df39e7b87272c2eca1b8fcc3089bc9e58652019a", - "sha256:cba3566e8a8fb7bb417d6897a6e17bfc7f9371052e57eb0057783c07d762a679" + "sha256:2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7", + "sha256:3ff5b1bf5e397de6e1fe41a7c0f403dad4e242ac92b345f440eaecfb72a7ebae" ], "index": "pypi", - "version": "==0.4.6" + "version": "==0.4.7" }, "python-levenshtein": { "hashes": [ @@ -851,15 +852,23 @@ "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", + "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", + "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", + "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", + "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", + "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc" + "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", + "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", + "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", + "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" ], "version": "==5.4.1" }, @@ -874,98 +883,87 @@ }, "regex": { "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:80ef188c0e47a6c964eed71c55a73c245f8daf9f0a4a9d804e91275afb468ca4", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:842fb985b2b99a82a2b145b6bbd588c5f5cfd83693402920fcb985d515794666", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139", + "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5", + "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa", + "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3", + "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df", + "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f", + "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e", + "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd", + "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d", + "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e", + "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f", + "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa", + "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68", + "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643", + "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3", + "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be", + "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578", + "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c", + "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5", + "sha256:63f861afb575ee39fc42df919ca6c625b534cf51b2b95d54fc97f85d293a22a2", + "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba", + "sha256:808276b84e69346635da368f4b9d37ab8b27ce20a7b30e9cbb3717d1e81c78ec", + "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe", + "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c", + "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a", + "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb", + "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d", + "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38", + "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18", + "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce", + "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa", + "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6", + "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5", + "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90", + "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c", + "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106", + "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7", + "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0", + "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689", + "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd", + "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932", + "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf", + "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14" ], - "version": "==2020.11.13" + "version": "==2021.3.17" }, "reportlab": { "hashes": [ - "sha256:009fa61710647cdc62eb373345248d8ebb93583a058990f7c4f9be46d90aa5b1", - "sha256:04a08d284da86882ec3a41a7c719833362ef891b09ee8e2fbb47cee352aa684a", - "sha256:07bff6742fba612da8d1b1f783c436338c6fdc6962828159827d5ca7d2b67935", - "sha256:09fb11ab1500e679fc1b01199d2fed24435499856e75043a9ac0d31dd48fd881", - "sha256:18a876449c9000c391dd3415ebc8454cd7bb9e488977b894886a2d7d018f16cd", - "sha256:18eec161411026dde49767bee4e5e8eeb8014879554811a62581dc7433628d5b", - "sha256:19353aead39fc115a4d6c598d6fb9fa26da7e69160a0443ebb49b02903e704e8", - "sha256:1b85c20e89c22ae902ca973df2afdd2d64d27dc4ffd2b29ebad8c805a213756b", - "sha256:1da3d7a35f918cee905facfa94bd00ae6091cadc06dca1b0b31b69ae02d41d1d", - "sha256:1e484ce83dae26cb40fcbd312d45b8ba921de7856a00339d867dd4ecf145a1e7", - "sha256:33f3cfdc492575f8af3225701301a7e62fc478358729820c9e0091aff5831378", - "sha256:3b0026c1129147befd4e5a8cf25da8dea1096fce371e7b2412e36d7254019c06", - "sha256:3d7713dddaa8081ed709a1fa2456a43f6a74b0f07d605da8441fd53fef334f69", - "sha256:3e2b4d69763103b9dc9b54c0952dc3cee05cedd06e28c0987fad7f84705b12c0", - "sha256:4ca5233a19a5ceca23546290f43addec2345789c7d65bb32f8b2668aa148351f", - "sha256:5214a289cf01ebbd65e49bae83709671dd9edb601891cf0ae8abf85f3c0b392f", - "sha256:52f8237654acbc78ea2fa6fb4a6a06e5b023b6da93f7889adfe2deba09473fad", - "sha256:5ed00894e0f8281c0b7c0494b4d3067c641fd90c8e5cf933089ec4cc9a48e491", - "sha256:6191961533d49c9d860964d42bada4d7ac3bb28502d984feb8034093f2012fa8", - "sha256:6f3ad2b1afe99c436563cd436d8693d4a12e2c4bd45f70c7705759ff7837fe53", - "sha256:739b743b7ca1ba4b4d64c321de6fccb49b562d0507ea06c817d9cc4faed5cd22", - "sha256:792efba0c0c6e4ee94f6dc95f305451733ee9230a1c7d51cb8e5301a549e0dfb", - "sha256:79d63ca40231ca3860859b39a92daa5219035ba9553da89a5e1b218550744121", - "sha256:83b28104edd58ad65748d2d0e60e0d97e3b91b3e90b4573ea6fe60de6811972c", - "sha256:85650446538cd2f606ca234634142a7ccd74cb6db7cfec250f76a4242e0f2431", - "sha256:8850eba6de6eb813036eb8dce353e40d60c8af48bbce107de82770b10d3aa525", - "sha256:9da445cb79e3f740756924c053edc952cde11a65ff5af8acfda3c0a1317136ef", - "sha256:9fabd5fbd24f5971085ffe53150d663f158f7d3050b25c95736e29ebf676d454", - "sha256:a0c377bc45e73c3f15f55d7de69fab270d174749d5b454ab0de502b15430ec2a", - "sha256:a1d3f7022a920d4a5e165d264581f1862e1c1b877ceeabb96fe98cec98125ae5", - "sha256:a315edef5c5610b0c75790142f49487e89ea34397fc247ae8aa890fe6d6dd057", - "sha256:a755cca2dcf023130b03bb671670301a992157d5c3151d838c0b68ef89894536", - "sha256:b1b20208ecdfffd7ca027955c4fe8972b28b30a4b3b80cf25099a08d3b20ed7c", - "sha256:b26d6f416891cef93411d6d478a25db275766081a5fb66368248293ef459f3be", - "sha256:b4ba4c30af7044ee987e61c88a5ffb76031ca0c53666bc85d823b7de55ddbc75", - "sha256:b71faf3b6e4d7058e1af1b8afedaf39a962db4a219affc8177009d8244ec10d4", - "sha256:cfa854bea525f8c913cb77e2bda724d94b965a0eb3bcfc4a645a9baa29bb86e2", - "sha256:dd9687359e466086b9f6fe6d8069034017f8b6ca3080944fae5709767ca6814e", - "sha256:de0c675fc2998a7eaa929c356ba49c84f53a892e9ab25e8ee7d8ebbbdcb2ac16", - "sha256:e2b4e33fea2ce9d3a14ea39191b169e41eb2ac995274f54ac8fd27519974bce8", - "sha256:f3d4a1a273dc141e03b72a553c11bc14dd7a27ec7654a071edcf83eb04f004bc", - "sha256:ff547cf4c1de7e104cad1a378431ff81efcb03e90e40871ee686107da5b91442" + "sha256:07f9d9c0360cb8fc780ca05264faa68b90583cd28dbdf2cda6bda34379b6e66c", + "sha256:27a831da0d17153e33c985bd7a88307e206c5a28778cddb755d5372598d12637", + "sha256:289539f7888239343ef7ebcd30c55e6204ef78d5f70e1547fdeb854a2da8bfa1", + "sha256:3ec70873d99c14570e2a9c44b86c8c01526871e7af5ee4b2855246db15cb0c9f", + "sha256:46745826657d35f86843487f4bc6f6f805f61260428f8ee13642bf6372f9df55", + "sha256:4a784ecdf3008f533e5a032b96c395e8592ed5e679baaf5ef4dcc136b01c72e9", + "sha256:4c42e85851f969e21fa4d6414587b7544e877ce685e2495d7d422589c70b6281", + "sha256:58bec163f727c1c60515fc4704a961b3b4ccf2c76b4e6ec1a457ea7ed0c2d756", + "sha256:6f007142f2b166f52cbb3e5d23319e3e496c429831e53b904e6db28c3370f279", + "sha256:81898de0a0be2c8318468ae0ae1590f828805e9b7fd68e5a50667dce8b942171", + "sha256:8707cc21a769150154bf4634dca6e9581ae24a05f0fb81a84fcc1143b1cbbfde", + "sha256:87546a129b36b50221172d3e42377eafbc2aae130ba9472953ac8f219fe119e4", + "sha256:99aeee49a61c85f1af1087e9e418f3d0c2352c4dd0f0abbfac17ae6c467185aa", + "sha256:9ec95808b742ce70c1dab28b2c5bef9093816b92315b948419c2c6968658f9cc", + "sha256:b2c7eedb4d19db63301c27ad1076086a099fd4c8ca0a6f62f6e9ed749fa5908f", + "sha256:b2cf692ae7af995b499a31a3f58f2001d98e310e03f74812bcb97a08078239c0", + "sha256:b9494986f35d82350b0ce0c29704a49a3945421b789dff92e93fbd3de554fa34", + "sha256:ba2d10f368c9ea1e76c84b3bb6b9982eb5a8f243c434e821c505b75ca8d85852", + "sha256:bc62187181582772688d65c557ad6a40a4c3bb8d1f74de463d35ea81983e9b75", + "sha256:bdf751289efee4891f4f354ce9122da8de8258a40f328b3f11540c4888363337", + "sha256:c12432575c793b8cd8552fddc219bbf2813541c64d02854ae345a108fb875b9d", + "sha256:cdf8ff72cd6fa9303744c8409fb81ef7720da2e034c369762c2fdf496462179e", + "sha256:d810bffd4bcd50fdcb2bab0d1fe9ea4e6187ed5237687e41c6ade6c884b00c1e", + "sha256:d8fefd07072bfae2715283a821fb1acf8fc4946cf925509d5cc2af791c611809", + "sha256:d92834993bf998853a04946729266a3276965e7b13f7423212f1c1abdfc4a1c7", + "sha256:ee711804acdaf3ea7f0f2cd27f19478af993e730df8c8d923a678eb0e2572fba", + "sha256:f0634740b099b69caed081acd89692996b5504c59f86f39781b6bebc82b267f5", + "sha256:f92388e30bf6b5d2eceb3d7b05ee2df856635f74ce7d950a8f45d2b70c685a5b", + "sha256:fd6712a8a6dca12181a3a12316f97810927861e77f2a98029efd2c5cfc8546dc", + "sha256:fe5d98cdac07dd702bcd49f5723aacdd0af8c84d70fc82a5cc3781e52aedad52" ], - "version": "==3.5.59" + "markers": "python_version >= '2.7' and python_version < '4'", + "version": "==3.5.65" }, "requests": { "hashes": [ @@ -1087,11 +1085,11 @@ }, "tqdm": { "hashes": [ - "sha256:2c44efa73b8914dba7807aefd09653ac63c22b5b4ea34f7a80973f418f1a3089", - "sha256:c23ac707e8e8aabb825e4d91f8e17247f9cc14b0d64dd9e97be0781e9e525bba" + "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", + "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" ], "index": "pypi", - "version": "==4.58.0" + "version": "==4.59.0" }, "twisted": { "extras": [ @@ -1121,11 +1119,11 @@ }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", + "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.3" + "version": "==1.26.4" }, "uvicorn": { "extras": [ @@ -1354,68 +1352,69 @@ }, "coverage": { "hashes": [ - "sha256:03ed2a641e412e42cc35c244508cf186015c217f0e4d496bf6d7078ebe837ae7", - "sha256:04b14e45d6a8e159c9767ae57ecb34563ad93440fc1b26516a89ceb5b33c1ad5", - "sha256:0cdde51bfcf6b6bd862ee9be324521ec619b20590787d1655d005c3fb175005f", - "sha256:0f48fc7dc82ee14aeaedb986e175a429d24129b7eada1b7e94a864e4f0644dde", - "sha256:107d327071061fd4f4a2587d14c389a27e4e5c93c7cba5f1f59987181903902f", - "sha256:1375bb8b88cb050a2d4e0da901001347a44302aeadb8ceb4b6e5aa373b8ea68f", - "sha256:14a9f1887591684fb59fdba8feef7123a0da2424b0652e1b58dd5b9a7bb1188c", - "sha256:16baa799ec09cc0dcb43a10680573269d407c159325972dd7114ee7649e56c66", - "sha256:1b811662ecf72eb2d08872731636aee6559cae21862c36f74703be727b45df90", - "sha256:1ccae21a076d3d5f471700f6d30eb486da1626c380b23c70ae32ab823e453337", - "sha256:2f2cf7a42d4b7654c9a67b9d091ec24374f7c58794858bff632a2039cb15984d", - "sha256:322549b880b2d746a7672bf6ff9ed3f895e9c9f108b714e7360292aa5c5d7cf4", - "sha256:32ab83016c24c5cf3db2943286b85b0a172dae08c58d0f53875235219b676409", - "sha256:3fe50f1cac369b02d34ad904dfe0771acc483f82a1b54c5e93632916ba847b37", - "sha256:4a780807e80479f281d47ee4af2eb2df3e4ccf4723484f77da0bb49d027e40a1", - "sha256:4a8eb7785bd23565b542b01fb39115a975fefb4a82f23d407503eee2c0106247", - "sha256:4b40b794775df10d7e3ea677108dd581bfec796235750c617d461874178a67f6", - "sha256:5bee3970617b3d74759b2d2df2f6a327d372f9732f9ccbf03fa591b5f7581e39", - "sha256:60a3307a84ec60578accd35d7f0c71a3a971430ed7eca6567399d2b50ef37b8c", - "sha256:6625e52b6f346a283c3d563d1fd8bae8956daafc64bb5bbd2b8f8a07608e3994", - "sha256:66a5aae8233d766a877c5ef293ec5ab9520929c2578fd2069308a98b7374ea8c", - "sha256:68fb816a5dd901c6aff352ce49e2a0ffadacdf9b6fae282a69e7a16a02dad5fb", - "sha256:6b588b5cf51dc0fd1c9e19f622457cc74b7d26fe295432e434525f1c0fae02bc", - "sha256:6c4d7165a4e8f41eca6b990c12ee7f44fef3932fac48ca32cecb3a1b2223c21f", - "sha256:6d2e262e5e8da6fa56e774fb8e2643417351427604c2b177f8e8c5f75fc928ca", - "sha256:6d9c88b787638a451f41f97446a1c9fd416e669b4d9717ae4615bd29de1ac135", - "sha256:755c56beeacac6a24c8e1074f89f34f4373abce8b662470d3aa719ae304931f3", - "sha256:7e40d3f8eb472c1509b12ac2a7e24158ec352fc8567b77ab02c0db053927e339", - "sha256:812eaf4939ef2284d29653bcfee9665f11f013724f07258928f849a2306ea9f9", - "sha256:84df004223fd0550d0ea7a37882e5c889f3c6d45535c639ce9802293b39cd5c9", - "sha256:859f0add98707b182b4867359e12bde806b82483fb12a9ae868a77880fc3b7af", - "sha256:87c4b38288f71acd2106f5d94f575bc2136ea2887fdb5dfe18003c881fa6b370", - "sha256:89fc12c6371bf963809abc46cced4a01ca4f99cba17be5e7d416ed7ef1245d19", - "sha256:9564ac7eb1652c3701ac691ca72934dd3009997c81266807aef924012df2f4b3", - "sha256:9754a5c265f991317de2bac0c70a746efc2b695cf4d49f5d2cddeac36544fb44", - "sha256:a565f48c4aae72d1d3d3f8e8fb7218f5609c964e9c6f68604608e5958b9c60c3", - "sha256:a636160680c6e526b84f85d304e2f0bb4e94f8284dd765a1911de9a40450b10a", - "sha256:a839e25f07e428a87d17d857d9935dd743130e77ff46524abb992b962eb2076c", - "sha256:ae9702c099546e72000d76758b5efec2dd937ba5d746ec8d0563d2fca0f9bc2e", - "sha256:b62046592b44263fa7570f1117d372ae3f310222af1fc1407416f037fb3af21b", - "sha256:b7f7421841f8db443855d2854e25914a79a1ff48ae92f70d0a5c2f8907ab98c9", - "sha256:ba7ca81b6d60a9f7a0b4b4e175dcc38e8fef4992673d9d6e6879fd6de00dd9b8", - "sha256:bb32ca14b4d04e172c541c69eec5f385f9a075b38fb22d765d8b0ce3af3a0c22", - "sha256:c0ff1c1b4d13e2240821ef23c1efb1f009207cb3f56e16986f713c2b0e7cd37f", - "sha256:c669b440ce46ae3abe9b2d44a913b5fd86bb19eb14a8701e88e3918902ecd345", - "sha256:c67734cff78383a1f23ceba3b3239c7deefc62ac2b05fa6a47bcd565771e5880", - "sha256:c6809ebcbf6c1049002b9ac09c127ae43929042ec1f1dbd8bb1615f7cd9f70a0", - "sha256:cd601187476c6bed26a0398353212684c427e10a903aeafa6da40c63309d438b", - "sha256:ebfa374067af240d079ef97b8064478f3bf71038b78b017eb6ec93ede1b6bcec", - "sha256:fbb17c0d0822684b7d6c09915677a32319f16ff1115df5ec05bdcaaee40b35f3", - "sha256:fff1f3a586246110f34dc762098b5afd2de88de507559e63553d7da643053786" + "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", + "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", + "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", + "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", + "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", + "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", + "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", + "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", + "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", + "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", + "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", + "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", + "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", + "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", + "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", + "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", + "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", + "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", + "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", + "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", + "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", + "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", + "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", + "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", + "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", + "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", + "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", + "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", + "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", + "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", + "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", + "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", + "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", + "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", + "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", + "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", + "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", + "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", + "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", + "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", + "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", + "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", + "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", + "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", + "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", + "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", + "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", + "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", + "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", + "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", + "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", + "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==5.4" + "version": "==5.5" }, "coveralls": { "hashes": [ - "sha256:5399c0565ab822a70a477f7031f6c88a9dd196b3de2877b3facb43b51bd13434", - "sha256:f8384968c57dee4b7133ae701ecdad88e85e30597d496dcba0d7fbb470dca41f" + "sha256:7bd173b3425733661ba3063c88f180127cc2b20e9740686f86d2622b31b41385", + "sha256:cbb942ae5ef3d2b55388cb5b43e93a269544911535f1e750e1c656aef019ce60" ], "index": "pypi", - "version": "==3.0.0" + "version": "==3.0.1" }, "distlib": { "hashes": [ @@ -1457,11 +1456,11 @@ }, "faker": { "hashes": [ - "sha256:90b69e9e05d622edb2fa5ebfda7bef41c88675cace85e72689fde5b8723d00a3", - "sha256:da395fe545f40d4366b82b1a02448847a4586bd2b28af393b3edbd1e45d1e0fc" + "sha256:60a7263104ef7a14ecfe2af1142d53924aa534ccec85cea82bb67b2b32f84421", + "sha256:f43ac743c34affb1c7fccca8b06450371cd482b6ddcb4110e420acb24356e70b" ], "markers": "python_version >= '3.6'", - "version": "==6.5.0" + "version": "==6.6.2" }, "filelock": { "hashes": [ @@ -1591,19 +1590,19 @@ }, "pycodestyle": { "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068", + "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef" ], "index": "pypi", - "version": "==2.6.0" + "version": "==2.7.0" }, "pygments": { "hashes": [ - "sha256:37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0", - "sha256:b21b072d0ccdf29297a82a2363359d99623597b8a265b8081760e4d0f7153c88" + "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", + "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" ], "markers": "python_version >= '3.5'", - "version": "==2.8.0" + "version": "==2.8.1" }, "pyparsing": { "hashes": [ @@ -1796,27 +1795,27 @@ }, "tox": { "hashes": [ - "sha256:89afa9c59c04beb55eda789c7a65feb1a70fde117f85f1bd1c27c66758456e60", - "sha256:ed1e650cf6368bcbc4a071eeeba363c480920e0ed8a9ad1793c7caaa5ad33d49" + "sha256:05a4dbd5e4d3d8269b72b55600f0b0303e2eb47ad5c6fe76d3576f4c58d93661", + "sha256:e007673f3595cede9b17a7c4962389e4305d4a3682a6c5a4159a1453b4f326aa" ], "index": "pypi", - "version": "==3.22.0" + "version": "==3.23.0" }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", + "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.3" + "version": "==1.26.4" }, "virtualenv": { "hashes": [ - "sha256:147b43894e51dd6bba882cf9c282447f780e2251cd35172403745fc381a0a80d", - "sha256:2be72df684b74df0ea47679a7df93fd0e04e72520022c57b479d8f881485dbe3" + "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107", + "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.4.2" + "version": "==20.4.3" } } } diff --git a/requirements.txt b/requirements.txt index 947a30350..de268fc2e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,11 +8,11 @@ -i https://pypi.python.org/simple --extra-index-url https://www.piwheels.org/simple aioredis==1.3.1 -arrow==1.0.1; python_version >= '3.6' +arrow==1.0.3; python_version >= '3.6' asgiref==3.3.1; python_version >= '3.5' async-timeout==3.0.1; python_full_version >= '3.5.3' attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -autobahn==21.2.2; python_version >= '3.7' +autobahn==21.3.1; python_version >= '3.7' automat==20.2.0 blessed==1.18.0 certifi==2020.12.5 @@ -43,9 +43,9 @@ httptools==0.1.1 humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' hyperlink==21.0.0 idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -imap-tools==0.38.1 +imap-tools==0.39.0 img2pdf==0.4.0 -incremental==17.5.0 +incremental==21.3.0 inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' inotifyrecursive==0.3.5 joblib==1.0.1; python_version >= '3.6' @@ -53,11 +53,11 @@ langdetect==1.0.8 lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' msgpack==1.0.2 numpy==1.19.5 -ocrmypdf==11.7.0 +ocrmypdf==11.7.1 pathvalidate==2.3.2 pdfminer.six==20201018 -pikepdf==2.5.2 -pillow==8.1.0 +pikepdf==2.9.0 +pillow==8.1.2 pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' portalocker==2.2.1; python_version >= '3' psycopg2-binary==2.8.6 @@ -67,14 +67,14 @@ pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' python-dateutil==2.8.1 python-dotenv==0.15.0 -python-gnupg==0.4.6 +python-gnupg==0.4.7 python-levenshtein==0.12.2 python-magic==0.4.22 pytz==2021.1 pyyaml==5.4.1 redis==3.5.3 -regex==2020.11.13 -reportlab==3.5.59 +regex==2021.3.17 +reportlab==3.5.65; python_version >= '2.7' and python_version < '4' requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' scikit-learn==0.24.0 scipy==1.5.4 @@ -84,11 +84,11 @@ sortedcontainers==2.3.0 sqlparse==0.4.1; python_version >= '3.5' threadpoolctl==2.1.0; python_version >= '3.5' tika==1.24 -tqdm==4.58.0 +tqdm==4.59.0 twisted[tls]==21.2.0; python_full_version >= '3.5.4' txaio==21.2.1; python_version >= '3.6' tzlocal==2.1 -urllib3==1.26.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +urllib3==1.26.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' uvicorn[standard]==0.13.4 uvloop==0.14.0 watchdog==1.0.2 From 0aa084c792a18ecd6b12cf78e857a042df9af8cf Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 18 Mar 2021 23:50:54 +0100 Subject: [PATCH 26/93] New Crowdin updates (#790) --- src-ui/src/locale/messages.nl_NL.xlf | 2 +- src-ui/src/locale/messages.pt_PT.xlf | 2 +- src/locale/nl_NL/LC_MESSAGES/django.po | 4 +- src/locale/pt_PT/LC_MESSAGES/django.po | 100 ++++++++++++------------- 4 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index 647a8de2b..c187fc531 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -1927,7 +1927,7 @@ src/app/services/settings.service.ts 95 - Portuguese + Portugees Portuguese (Brazil) diff --git a/src-ui/src/locale/messages.pt_PT.xlf b/src-ui/src/locale/messages.pt_PT.xlf index 98de03004..1059654f9 100644 --- a/src-ui/src/locale/messages.pt_PT.xlf +++ b/src-ui/src/locale/messages.pt_PT.xlf @@ -1927,7 +1927,7 @@ src/app/services/settings.service.ts 95 - Portuguese + Português Portuguese (Brazil) diff --git a/src/locale/nl_NL/LC_MESSAGES/django.po b/src/locale/nl_NL/LC_MESSAGES/django.po index fa57cd6aa..c07b3d521 100644 --- a/src/locale/nl_NL/LC_MESSAGES/django.po +++ b/src/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"PO-Revision-Date: 2021-03-18 20:12\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -430,7 +430,7 @@ msgstr "Portugees (Brazilië)" #: paperless/settings.py:304 msgid "Portuguese" -msgstr "" +msgstr "Portugees" #: paperless/settings.py:305 msgid "Italian" diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index a22858ce4..6ed99d226 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:48\n" +"PO-Revision-Date: 2021-03-18 22:23\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -80,7 +80,7 @@ msgstr "é etiqueta de novo" #: documents/models.py:89 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." -msgstr "" +msgstr "Marca esta etiqueta como uma etiqueta de entrada. Todos os documentos recentemente consumidos serão etiquetados com a etiqueta de entrada." #: documents/models.py:94 msgid "tag" @@ -116,11 +116,11 @@ msgstr "conteúdo" #: documents/models.py:139 msgid "The raw, text-only data of the document. This field is primarily used for searching." -msgstr "" +msgstr "Os dados de texto, em cru, do documento. Este campo é utilizado principalmente para pesquisar." #: documents/models.py:144 msgid "mime type" -msgstr "" +msgstr "tipo mime" #: documents/models.py:155 msgid "checksum" @@ -176,7 +176,7 @@ msgstr "numero de série de arquivo" #: documents/models.py:217 msgid "The position of this document in your physical document archive." -msgstr "" +msgstr "A posição do documento no seu arquivo físico de documentos." #: documents/models.py:223 msgid "document" @@ -264,7 +264,7 @@ msgstr "o conteúdo contém" #: documents/models.py:372 msgid "ASN is" -msgstr "" +msgstr "O NSA é" #: documents/models.py:373 msgid "correspondent is" @@ -276,7 +276,7 @@ msgstr "o tipo de documento é" #: documents/models.py:375 msgid "is in inbox" -msgstr "" +msgstr "está na entrada" #: documents/models.py:376 msgid "has tag" @@ -328,7 +328,7 @@ msgstr "não tem etiqueta" #: documents/models.py:388 msgid "does not have ASN" -msgstr "" +msgstr "não possui um NSA" #: documents/models.py:389 msgid "title or content contains" @@ -390,7 +390,7 @@ msgstr "Por favor inicie sessão." #: documents/templates/registration/login.html:45 msgid "Your username and password didn't match. Please try again." -msgstr "" +msgstr "O utilizador e a senha não correspondem. Tente novamente." #: documents/templates/registration/login.html:48 msgid "Username" @@ -430,7 +430,7 @@ msgstr "Português (Brasil)" #: paperless/settings.py:304 msgid "Portuguese" -msgstr "" +msgstr "Português" #: paperless/settings.py:305 msgid "Italian" @@ -458,7 +458,7 @@ msgstr "Filtro" #: paperless_mail/admin.py:27 msgid "Paperless will only process mails that match ALL of the filters given below." -msgstr "" +msgstr "O Paperless apenas irá processar emails que coincidem com TODOS os filtros dados abaixo." #: paperless_mail/admin.py:37 msgid "Actions" @@ -466,7 +466,7 @@ msgstr "Ações" #: paperless_mail/admin.py:39 msgid "The action applied to the mail. This action is only performed when documents were consumed from the mail. Mails without attachments will remain entirely untouched." -msgstr "" +msgstr "A ação aplicada a correio. Esta ação apenas será efetuada com documentos que tenham sido consumidos através do correio. E-mails sem anexos permanecerão intactos." #: paperless_mail/admin.py:46 msgid "Metadata" @@ -474,83 +474,83 @@ msgstr "Metadados" #: paperless_mail/admin.py:48 msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined." -msgstr "" +msgstr "Atribuir meta-dados aos documentos consumidos automaticamente através desta regra. Se você não atribuir etiquetas, tipos ou correspondentes aqui, o paperless ainda assim processará todas as regras correspondentes que tenha definido." #: paperless_mail/apps.py:9 msgid "Paperless mail" -msgstr "" +msgstr "Correio Paperless" #: paperless_mail/models.py:11 msgid "mail account" -msgstr "" +msgstr "conta de email" #: paperless_mail/models.py:12 msgid "mail accounts" -msgstr "" +msgstr "contas de email" #: paperless_mail/models.py:19 msgid "No encryption" -msgstr "" +msgstr "Sem encriptação" #: paperless_mail/models.py:20 msgid "Use SSL" -msgstr "" +msgstr "Utilizar SSL" #: paperless_mail/models.py:21 msgid "Use STARTTLS" -msgstr "" +msgstr "Utilizar STARTTLS" #: paperless_mail/models.py:29 msgid "IMAP server" -msgstr "" +msgstr "Servidor IMAP" #: paperless_mail/models.py:33 msgid "IMAP port" -msgstr "" +msgstr "Porto IMAP" #: paperless_mail/models.py:36 msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections." -msgstr "" +msgstr "Por norma é o 143 sem encriptação e conexões STARTTLS, e o 993 para conexões com SSL." #: paperless_mail/models.py:40 msgid "IMAP security" -msgstr "" +msgstr "Segurança IMAP" #: paperless_mail/models.py:46 msgid "username" -msgstr "" +msgstr "nome de utilizador" #: paperless_mail/models.py:50 msgid "password" -msgstr "" +msgstr "palavra-passe" #: paperless_mail/models.py:60 msgid "mail rule" -msgstr "" +msgstr "regra de correio" #: paperless_mail/models.py:61 msgid "mail rules" -msgstr "" +msgstr "regras de correio" #: paperless_mail/models.py:67 msgid "Only process attachments." -msgstr "" +msgstr "Processar anexos apenas." #: paperless_mail/models.py:68 msgid "Process all files, including 'inline' attachments." -msgstr "" +msgstr "Processar todos os ficheiros, incluindo ficheiros 'embutidos (inline)'." #: paperless_mail/models.py:78 msgid "Mark as read, don't process read mails" -msgstr "" +msgstr "Marcar como lido, não processar emails lidos" #: paperless_mail/models.py:79 msgid "Flag the mail, don't process flagged mails" -msgstr "" +msgstr "Marcar o email, não processar emails marcados" #: paperless_mail/models.py:80 msgid "Move to specified folder" -msgstr "" +msgstr "Mover para uma diretoria específica" #: paperless_mail/models.py:81 msgid "Delete" @@ -558,51 +558,51 @@ msgstr "Excluir" #: paperless_mail/models.py:88 msgid "Use subject as title" -msgstr "" +msgstr "Utilizar o assunto como título" #: paperless_mail/models.py:89 msgid "Use attachment filename as title" -msgstr "" +msgstr "Utilizar o nome do anexo como título" #: paperless_mail/models.py:99 msgid "Do not assign a correspondent" -msgstr "" +msgstr "Não atribuir um correspondente" #: paperless_mail/models.py:101 msgid "Use mail address" -msgstr "" +msgstr "Utilizar o endereço de email" #: paperless_mail/models.py:103 msgid "Use name (or mail address if not available)" -msgstr "" +msgstr "Utilizar nome (ou endereço de email se não disponível)" #: paperless_mail/models.py:105 msgid "Use correspondent selected below" -msgstr "" +msgstr "Utilizar o correspondente selecionado abaixo" #: paperless_mail/models.py:113 msgid "order" -msgstr "" +msgstr "ordem" #: paperless_mail/models.py:120 msgid "account" -msgstr "" +msgstr "conta" #: paperless_mail/models.py:124 msgid "folder" -msgstr "" +msgstr "directoria" #: paperless_mail/models.py:128 msgid "filter from" -msgstr "" +msgstr "filtrar de" #: paperless_mail/models.py:131 msgid "filter subject" -msgstr "" +msgstr "filtrar assunto" #: paperless_mail/models.py:134 msgid "filter body" -msgstr "" +msgstr "filtrar corpo" #: paperless_mail/models.py:138 msgid "filter attachment filename" @@ -638,25 +638,25 @@ msgstr "parâmetro de ação" #: paperless_mail/models.py:167 msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action." -msgstr "" +msgstr "Parâmetro adicional para a ação selecionada acima, isto é, a diretoria de destino do movimento da ação para a pasta." #: paperless_mail/models.py:173 msgid "assign title from" -msgstr "" +msgstr "atribuir titulo de" #: paperless_mail/models.py:183 msgid "assign this tag" -msgstr "" +msgstr "atribuir esta etiqueta" #: paperless_mail/models.py:191 msgid "assign this document type" -msgstr "" +msgstr "atribuir este tipo de documento" #: paperless_mail/models.py:195 msgid "assign correspondent from" -msgstr "" +msgstr "atribuir correspondente de" #: paperless_mail/models.py:205 msgid "assign this correspondent" -msgstr "" +msgstr "atribuir este correspondente" From 126a4ec21fc8e92a3f6106674dc14cb6ede9c380 Mon Sep 17 00:00:00 2001 From: HolzHannes Date: Sat, 20 Mar 2021 11:10:05 +0100 Subject: [PATCH 27/93] Update scanners.rst Some new scanners and a new Support column SMTP for Scanner which can directly send mails via SMTP. Also one iOS App to scan documents --- docs/scanners.rst | 54 +++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/docs/scanners.rst b/docs/scanners.rst index ad7566c71..04856bbfc 100644 --- a/docs/scanners.rst +++ b/docs/scanners.rst @@ -13,26 +13,35 @@ that works right for you based on recommendations from other Paperless users. Physical scanners ================= -+---------+----------------+-----+-----+-----+----------------+ -| Brand | Model | Supports | Recommended By | -+---------+----------------+-----+-----+-----+----------------+ -| | | FTP | NFS | SMB | | -+=========+================+=====+=====+=====+================+ -| Brother | `ADS-1500W`_ | yes | no | yes | `danielquinn`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Brother | `MFC-J6930DW`_ | yes | | | `ayounggun`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Brother | `MFC-J5910DW`_ | yes | | | `bmsleight`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Brother | `MFC-9142CDN`_ | yes | | yes | `REOLDEV`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Fujitsu | `ix500`_ | yes | | yes | `eonist`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Epson | `WF-7710DWF`_ | yes | | yes | `Skylinar`_ | -+---------+----------------+-----+-----+-----+----------------+ -| Fujitsu | `S1300i`_ | yes | | yes | `jonaswinkler`_| -+---------+----------------+-----+-----+-----+----------------+ ++---------+----------------+-----+-----+-----+------+----------------+ +| Brand | Model | Supports | Recommended By | ++---------+----------------+-----+-----+-----+------+----------------+ +| | | FTP | NFS | SMB | SMTP | | ++=========+================+=====+=====+=====+======+================+ +| Brother | `ADS-1700W`_ | yes | no | yes | yes |`holzhannes`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `ADS-1600W`_ | yes | no | yes | yes |`holzhannes`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `ADS-1500W`_ | yes | no | yes | yes |`danielquinn`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `MFC-J6930DW`_ | yes | | | |`ayounggun`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `MFC-L5850DW`_ | yes | | | yes |`holzhannes`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `MFC-J5910DW`_ | yes | | | |`bmsleight`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Brother | `MFC-9142CDN`_ | yes | | yes | |`REOLDEV`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Fujitsu | `ix500`_ | yes | | yes | |`eonist`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Epson | `WF-7710DWF`_ | yes | | yes | |`Skylinar`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +| Fujitsu | `S1300i`_ | yes | | yes | |`jonaswinkler`_ | ++---------+----------------+-----+-----+-----+------+----------------+ +.. _MFC-L5850DW: https://www.brother-usa.com/products/mfcl5850dw +.. _ADS-1700W: https://www.brother-usa.com/products/ads1700w +.. _ADS-1600W: https://www.brother-usa.com/products/ads1600w .. _ADS-1500W: https://www.brother.ca/en/p/ads1500w .. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW .. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw @@ -41,6 +50,7 @@ Physical scanners .. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf .. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/ + .. _danielquinn: https://github.com/danielquinn .. _ayounggun: https://github.com/ayounggun .. _bmsleight: https://github.com/bmsleight @@ -48,6 +58,7 @@ Physical scanners .. _REOLDEV: https://github.com/REOLDEV .. _Skylinar: https://github.com/Skylinar .. _jonaswinkler: https://github.com/jonaswinkler +.. _holzhannes: https://github.com/holzhannes Mobile phone software ===================== @@ -63,10 +74,13 @@ You can use your phone to "scan" documents. The regular camera app will work, bu +-------------------+----------------+-----+-----+-----+-------+--------+----------------+ | `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ | +-------------------+----------------+-----+-----+-----+-------+--------+----------------+ +| `Quick Scan`_ | iOS | no | no | no | no | no | `holzhannes`_ | ++-------------------+----------------+-----+-----+-----+-------+--------+----------------+ -On Android, you can use these applications in combination with one of the :ref:`Paperless-ng compatible apps ` to "Share" the documents produced by these scanner apps with paperless. +On Android, you can use these applications in combination with one of the :ref:`Paperless-ng compatible apps ` to "Share" the documents produced by these scanner apps with paperless. On iOS, you can share the scanned documents via iOS-Sharing to other mail, WebDav or FTP apps. .. _Office Lens: https://play.google.com/store/apps/details?id=com.microsoft.office.officelens .. _Genius Scan: https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free +.. _Quick Scan: https://apps.apple.com/us/app/quickscan-scanner-text-ocr/id1513790291 .. _hannahswain: https://github.com/hannahswain From 4954851b6821f17e5fc105d72968ee311ae4d812 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 21 Mar 2021 11:43:16 +0100 Subject: [PATCH 28/93] Revert "update requirements" This reverts commit 8f6e1360 --- Pipfile | 5 +- Pipfile.lock | 487 ++++++++++++++++++++++++----------------------- requirements.txt | 24 +-- 3 files changed, 259 insertions(+), 257 deletions(-) diff --git a/Pipfile b/Pipfile index 587872860..4d9836e68 100644 --- a/Pipfile +++ b/Pipfile @@ -24,8 +24,9 @@ langdetect = "*" # numpy 1.20.0 drops python 3.6 support numpy = "~=1.19.5" pathvalidate = "*" -pillow = "~=8.1.0" -pikepdf = "~=2.5" +# pinned to 8.1.0, since aarch64 wheels might not be available beyond that https://github.com/python-pillow/Pillow/issues/5202 +pillow = "==8.1.0" +pikepdf = "~=2.5.0" python-gnupg = "*" python-dotenv = "*" python-dateutil = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 33fae8d40..98d8655eb 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "50d92219dc02e7b3fdc2cd769ee4d838ff69da45ed9b06b54990e7a937cc2e9d" + "sha256": "49f8a0718a7982bc4ca7e1315c17849523b0d29c38f13cff88f8f883e0e9943a" }, "pipfile-spec": 6, "requires": {}, @@ -28,11 +28,11 @@ }, "arrow": { "hashes": [ - "sha256:3515630f11a15c61dcb4cdd245883270dd334c83f3e639824e65a4b79cc48543", - "sha256:399c9c8ae732270e1aa58ead835a79a40d7be8aa109c579898eb41029b5a231d" + "sha256:7909d9fd30d32fa8fd173fdeb3f7125aaf6dedd1a837276fe1d8cea2c0e86d76", + "sha256:b1e106a0ab754e540f4aeb08747900830b688adef02d81240e65afc0e781a870" ], "markers": "python_version >= '3.6'", - "version": "==1.0.3" + "version": "==1.0.1" }, "asgiref": { "hashes": [ @@ -60,11 +60,11 @@ }, "autobahn": { "hashes": [ - "sha256:9195df8af03b0ff29ccd4b7f5abbde957ee90273465942205f9a1bad6c3f07ac", - "sha256:e126c1f583e872fb59e79d36977cfa1f2d0a8a79f90ae31f406faae7664b8e03" + "sha256:884f79c50fdc55ade2c315946a9caa145e8b10075eee9d2c2594ea5e8f5226aa", + "sha256:bf7a9d302a34d0f719d43c57f65ca1f2f5c982dd6ea0c11e1e190ef6f43710fe" ], "markers": "python_version >= '3.7'", - "version": "==21.3.1" + "version": "==21.2.2" }, "automat": { "hashes": [ @@ -413,11 +413,11 @@ }, "imap-tools": { "hashes": [ - "sha256:00fa5b5046c0437976ad7dd5e45b1847bfd5d14bb858c9b19a5cf2994bba96d9", - "sha256:3b4d0a911bc48ea7c0beac6a15b6f65b6fdf2b066a67cd3536253ec98e401e83" + "sha256:44641716f0c5c07df78c5713405675fac50220d4f8e2906c9ed4aabd9c356fa8", + "sha256:bab9a6edf848a58bdd3959ba55e0eb75039ff188a3779371d0b8db674a4945e8" ], "index": "pypi", - "version": "==0.39.0" + "version": "==0.38.1" }, "img2pdf": { "hashes": [ @@ -428,10 +428,10 @@ }, "incremental": { "hashes": [ - "sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57", - "sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321" + "sha256:717e12246dddf231a349175f48d74d93e2897244939173b01974ab6661406b9f", + "sha256:7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3" ], - "version": "==21.3.0" + "version": "==17.5.0" }, "inotify-simple": { "hashes": [ @@ -589,11 +589,11 @@ }, "ocrmypdf": { "hashes": [ - "sha256:2d2c9efd3443e3fc3e852aea572b8d82bcdf24081c7cc74d760ae4064859bb54", - "sha256:a403699d54d63ff32ebc117ce5dde4d3c870ab69d5ef3e63c24ef12bc7b9b7e9" + "sha256:2fca4046e3a33e5902dd89c3003a3f31c7d584dc43f14c7c97f57fce20d2e469", + "sha256:5c386fcf2c0f2635533c2bad0edcd2d455f667a134d180dc61cbb3d4d5f0c8e2" ], "index": "pypi", - "version": "==11.7.1" + "version": "==11.7.0" }, "pathvalidate": { "hashes": [ @@ -613,72 +613,71 @@ }, "pikepdf": { "hashes": [ - "sha256:02a5c06c386c09f513806a200765855936e02c6952a67eb5c62b13f36b047f2a", - "sha256:064b337f627d9907cbaf3c71b8615ad773dd9c21766c29e1ae6816f971ef03e0", - "sha256:0ad9d95739f41b563812fb01d061a8abd45fcc548722b5d9ca50ffe28ce68a1c", - "sha256:12f471bb9121bdd2cf3311a59ce85776e55382c351092ab5678d4a3f71909b05", - "sha256:1c27ac02436c9d2e4b5f4fd172803b66c4eff08e529b7aafae8a08bd3354efcf", - "sha256:25c55249ecb40172f4e90710e1713f8dc46c99f988bbd760381bc7f5a91fa4b1", - "sha256:4906716a42e52900c0004217f910f5315e7e1ad0ad0501d4b0eed074185a3b3c", - "sha256:72517071904cb7ccc370217f5273e6a05683367927c5655e41428bb48304367c", - "sha256:8926bb4fa179a84c92921bf06b36a6c2c96f0c97b433e093090cfdda448d6d22", - "sha256:9a710b194449e577844453e2a55a63fdeb93ace87e498f17b36ea0c056ad8338", - "sha256:9db001ffaaf809b4f5553e5b06c62a0b89ccae64909a36b560e50b191bca51c2", - "sha256:a9dbd2bb52fcdecb066c99cacf96f0ebb40edee50d8885502a5a22d7f723a8b7", - "sha256:af0b95a410ace5ce7e5026bbb55645e7a9a471a320df8794b72c99f721be66cc", - "sha256:b52d983c41f12b69ccb6b4589d73d37734a81883761338994f03f3692728f776", - "sha256:c5626e87568fa9008396783480985c142fe24a5cf92e6104a56acdca09ac7cb5", - "sha256:c8c8aab370a7e44e78b56dab7edbda5d1695ae2a78ec38a64d3ba8f042767d4a", - "sha256:cc5d090f99306807be6c81a8b5f1ed09cafa5d0aa8e1df98046650d7dc8518fa", - "sha256:d1afed38b72e6454dc54d609c507dd0f4ff6a071da43cd5b5d0c574608e5e686", - "sha256:e1ed96cd5dacb796af6e28b4272c1840a8073206c6f830172db1609be12bd5a0", - "sha256:e9d0a7ed96550c184c1a2411dbb7c0a67b507d3da46c1d10d745407875048a9e", - "sha256:f01ec3c29a1f8554ba1b1d83f907fb7d71d79f8e362643db7804ad46362dae51", - "sha256:f26b003d9d6d0d577d14f769199b7886492bc1d9115fb0cf127eec7f7d4347ac", - "sha256:f823f2ff40074fae0a52b4c7af120ec101a0a6c572f1717e5bf094e0196464e8" + "sha256:02815df9499d3a6dfac2e07e4d2fdbe25fcbefae208970e76bff90af4a402d49", + "sha256:06b0c3004cc9e9068ebc62bb59c3c3a54e7af13867f4a326690d79c69a1cf288", + "sha256:1a471c6ca288fbcd0e1b0e128ef12bb14c5e7db745786308ba292fc7cff30bb5", + "sha256:489ed0fd1281beb0343a34fe8b9d94407c440ed0419ab2e6f5ea297a41824a31", + "sha256:5106b27f7085ed449e057b9988f07c80a87292d2bf46c585a8635ac7a3ccf0d5", + "sha256:51acffba6f3d21674eea7a0432ce1adaf0743641d57844a5e3dc92b4a7e81c85", + "sha256:53d694d70dd072a47bd2dd71329dcef0f809dcd8084d1d11c31baf3b64cd345c", + "sha256:6a640fef52dc785abd354d6800a52ecc02656c98dbfc2ecde559323b001bd43f", + "sha256:7006ef95f847412605dea6e772019f637949eaeaf65363d5d6afd9aa96bf5623", + "sha256:81e13b62877dbc089095e7efa03c27834bdf6b49d404d064cb227b0e179ce049", + "sha256:8fc3e97b24dafbd4b1ac057c8f144c18467ce55d342a1a8c42688890ead58ef3", + "sha256:9158dc4d3ef4e2301fb1879d5825530fdb32143ced770d60fa8e5badeee70a35", + "sha256:961337a10b42bd656b59116ce1c574eafd515b45a513221df6ae1f11734bfb6c", + "sha256:994ccac972357a7b9b147217e1beea2f7688697944b862dbb2a3e64aa9a5ff14", + "sha256:a8e9abf7db0351357b55c3f935979e7dc14f3f259a25d15bcc86abce730955a7", + "sha256:b836eda7f70b9dd75ccdeaf4e78b38393118a66821a69a10054b1430f945d1fd", + "sha256:b859a225f6bd953472c50f4df612b4575df646e560189e3720310ad65b6805a0", + "sha256:cae106bd461cfad73c554c09f6db1d5f2c6a28f5b8cb0602b63046840f488226", + "sha256:cdc75b8fa5a650f4fc91214a315358fde7470e09b95a00981b73a7c4ac5ddb97", + "sha256:e2c28da4f37ad9a3efbedbbfc6f1084941bde43903d30dfdbb338d5ba94c9f50", + "sha256:e596bd8fdbf40bfb8dc8068cdbc7e5b72052188d1ad8ca84da9d6b77658a8b31", + "sha256:ee957b9c60b6def20cbdf656d35859ce211eec02dafa3abb9d5ca937d32a3c3b", + "sha256:f9428d4b1f70af4f4560be4dccbbc5ab5308c00c5b62ed2f1c44ce9e2591b3d2" ], "index": "pypi", - "version": "==2.9.0" + "version": "==2.5.2" }, "pillow": { "hashes": [ - "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af", - "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1", - "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c", - "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55", - "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060", - "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e", - "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8", - "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e", - "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0", - "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328", - "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238", - "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733", - "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03", - "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06", - "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71", - "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b", - "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6", - "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910", - "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce", - "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28", - "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d", - "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb", - "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6", - "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09", - "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be", - "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0", - "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44", - "sha256:bd08a7e01d388c5e0b5b46b52081e01dc96ef226aeed13fa1d7af94b81d4e93b", - "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1", - "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341", - "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34", - "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2", - "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a", - "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5" + "sha256:165c88bc9d8dba670110c689e3cc5c71dbe4bfb984ffa7cbebf1fac9554071d6", + "sha256:1d208e670abfeb41b6143537a681299ef86e92d2a3dac299d3cd6830d5c7bded", + "sha256:22d070ca2e60c99929ef274cfced04294d2368193e935c5d6febfd8b601bf865", + "sha256:2353834b2c49b95e1313fb34edf18fca4d57446675d05298bb694bca4b194174", + "sha256:39725acf2d2e9c17356e6835dccebe7a697db55f25a09207e38b835d5e1bc032", + "sha256:3de6b2ee4f78c6b3d89d184ade5d8fa68af0848f9b6b6da2b9ab7943ec46971a", + "sha256:47c0d93ee9c8b181f353dbead6530b26980fe4f5485aa18be8f1fd3c3cbc685e", + "sha256:5e2fe3bb2363b862671eba632537cd3a823847db4d98be95690b7e382f3d6378", + "sha256:604815c55fd92e735f9738f65dabf4edc3e79f88541c221d292faec1904a4b17", + "sha256:6c5275bd82711cd3dcd0af8ce0bb99113ae8911fc2952805f1d012de7d600a4c", + "sha256:731ca5aabe9085160cf68b2dbef95fc1991015bc0a3a6ea46a371ab88f3d0913", + "sha256:7612520e5e1a371d77e1d1ca3a3ee6227eef00d0a9cddb4ef7ecb0b7396eddf7", + "sha256:7916cbc94f1c6b1301ac04510d0881b9e9feb20ae34094d3615a8a7c3db0dcc0", + "sha256:81c3fa9a75d9f1afafdb916d5995633f319db09bd773cb56b8e39f1e98d90820", + "sha256:887668e792b7edbfb1d3c9d8b5d8c859269a0f0eba4dda562adb95500f60dbba", + "sha256:8c183b5c60544b49e0a66f924b18c526dfd37774811b627f70836fe01711abd3", + "sha256:93a473b53cc6e0b3ce6bf51b1b95b7b1e7e6084be3a07e40f79b42e83503fbf2", + "sha256:96d4dc103d1a0fa6d47c6c55a47de5f5dafd5ef0114fa10c85a1fd8e0216284b", + "sha256:a3d3e086474ef12ef13d42e5f9b7bbf09d39cf6bd4940f982263d6954b13f6a9", + "sha256:b02a0b9f332086657852b1f7cb380f6a42403a6d9c42a4c34a561aa4530d5234", + "sha256:b09e10ec453de97f9a23a5aa5e30b334195e8d2ddd1ce76cc32e52ba63c8b31d", + "sha256:b6f00ad5ebe846cc91763b1d0c6d30a8042e02b2316e27b05de04fa6ec831ec5", + "sha256:bba80df38cfc17f490ec651c73bb37cd896bc2400cfba27d078c2135223c1206", + "sha256:c3d911614b008e8a576b8e5303e3db29224b455d3d66d1b2848ba6ca83f9ece9", + "sha256:ca20739e303254287138234485579b28cb0d524401f83d5129b5ff9d606cb0a8", + "sha256:cb192176b477d49b0a327b2a5a4979552b7a58cd42037034316b8018ac3ebb59", + "sha256:cdbbe7dff4a677fb555a54f9bc0450f2a21a93c5ba2b44e09e54fcb72d2bd13d", + "sha256:cf6e33d92b1526190a1de904df21663c46a456758c0424e4f947ae9aa6088bf7", + "sha256:d355502dce85ade85a2511b40b4c61a128902f246504f7de29bbeec1ae27933a", + "sha256:d673c4990acd016229a5c1c4ee8a9e6d8f481b27ade5fc3d95938697fa443ce0", + "sha256:dc577f4cfdda354db3ae37a572428a90ffdbe4e51eda7849bf442fb803f09c9b", + "sha256:dd9eef866c70d2cbbea1ae58134eaffda0d4bfea403025f4db6859724b18ab3d", + "sha256:f50e7a98b0453f39000619d845be8b06e611e56ee6e8186f7f60c3b1e2f0feae" ], "index": "pypi", - "version": "==8.1.2" + "version": "==8.1.0" }, "pluggy": { "hashes": [ @@ -809,11 +808,11 @@ }, "python-gnupg": { "hashes": [ - "sha256:2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7", - "sha256:3ff5b1bf5e397de6e1fe41a7c0f403dad4e242ac92b345f440eaecfb72a7ebae" + "sha256:3aa0884b3bd414652c2385b9df39e7b87272c2eca1b8fcc3089bc9e58652019a", + "sha256:cba3566e8a8fb7bb417d6897a6e17bfc7f9371052e57eb0057783c07d762a679" ], "index": "pypi", - "version": "==0.4.7" + "version": "==0.4.6" }, "python-levenshtein": { "hashes": [ @@ -852,23 +851,15 @@ "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", - "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", - "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", - "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", - "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", - "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", - "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", - "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", - "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" + "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc" ], "version": "==5.4.1" }, @@ -883,87 +874,98 @@ }, "regex": { "hashes": [ - "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139", - "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5", - "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa", - "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3", - "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df", - "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f", - "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e", - "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd", - "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d", - "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e", - "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f", - "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa", - "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68", - "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643", - "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3", - "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be", - "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578", - "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c", - "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5", - "sha256:63f861afb575ee39fc42df919ca6c625b534cf51b2b95d54fc97f85d293a22a2", - "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba", - "sha256:808276b84e69346635da368f4b9d37ab8b27ce20a7b30e9cbb3717d1e81c78ec", - "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe", - "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c", - "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a", - "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb", - "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d", - "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38", - "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18", - "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce", - "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa", - "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6", - "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5", - "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90", - "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c", - "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106", - "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7", - "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0", - "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689", - "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd", - "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932", - "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf", - "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14" + "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", + "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", + "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", + "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", + "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", + "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", + "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", + "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", + "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", + "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", + "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", + "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", + "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", + "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", + "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", + "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", + "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", + "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", + "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", + "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", + "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", + "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", + "sha256:80ef188c0e47a6c964eed71c55a73c245f8daf9f0a4a9d804e91275afb468ca4", + "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", + "sha256:842fb985b2b99a82a2b145b6bbd588c5f5cfd83693402920fcb985d515794666", + "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", + "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", + "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", + "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", + "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", + "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", + "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", + "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", + "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", + "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", + "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", + "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", + "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", + "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", + "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", + "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", + "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", + "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" ], - "version": "==2021.3.17" + "version": "==2020.11.13" }, "reportlab": { "hashes": [ - "sha256:07f9d9c0360cb8fc780ca05264faa68b90583cd28dbdf2cda6bda34379b6e66c", - "sha256:27a831da0d17153e33c985bd7a88307e206c5a28778cddb755d5372598d12637", - "sha256:289539f7888239343ef7ebcd30c55e6204ef78d5f70e1547fdeb854a2da8bfa1", - "sha256:3ec70873d99c14570e2a9c44b86c8c01526871e7af5ee4b2855246db15cb0c9f", - "sha256:46745826657d35f86843487f4bc6f6f805f61260428f8ee13642bf6372f9df55", - "sha256:4a784ecdf3008f533e5a032b96c395e8592ed5e679baaf5ef4dcc136b01c72e9", - "sha256:4c42e85851f969e21fa4d6414587b7544e877ce685e2495d7d422589c70b6281", - "sha256:58bec163f727c1c60515fc4704a961b3b4ccf2c76b4e6ec1a457ea7ed0c2d756", - "sha256:6f007142f2b166f52cbb3e5d23319e3e496c429831e53b904e6db28c3370f279", - "sha256:81898de0a0be2c8318468ae0ae1590f828805e9b7fd68e5a50667dce8b942171", - "sha256:8707cc21a769150154bf4634dca6e9581ae24a05f0fb81a84fcc1143b1cbbfde", - "sha256:87546a129b36b50221172d3e42377eafbc2aae130ba9472953ac8f219fe119e4", - "sha256:99aeee49a61c85f1af1087e9e418f3d0c2352c4dd0f0abbfac17ae6c467185aa", - "sha256:9ec95808b742ce70c1dab28b2c5bef9093816b92315b948419c2c6968658f9cc", - "sha256:b2c7eedb4d19db63301c27ad1076086a099fd4c8ca0a6f62f6e9ed749fa5908f", - "sha256:b2cf692ae7af995b499a31a3f58f2001d98e310e03f74812bcb97a08078239c0", - "sha256:b9494986f35d82350b0ce0c29704a49a3945421b789dff92e93fbd3de554fa34", - "sha256:ba2d10f368c9ea1e76c84b3bb6b9982eb5a8f243c434e821c505b75ca8d85852", - "sha256:bc62187181582772688d65c557ad6a40a4c3bb8d1f74de463d35ea81983e9b75", - "sha256:bdf751289efee4891f4f354ce9122da8de8258a40f328b3f11540c4888363337", - "sha256:c12432575c793b8cd8552fddc219bbf2813541c64d02854ae345a108fb875b9d", - "sha256:cdf8ff72cd6fa9303744c8409fb81ef7720da2e034c369762c2fdf496462179e", - "sha256:d810bffd4bcd50fdcb2bab0d1fe9ea4e6187ed5237687e41c6ade6c884b00c1e", - "sha256:d8fefd07072bfae2715283a821fb1acf8fc4946cf925509d5cc2af791c611809", - "sha256:d92834993bf998853a04946729266a3276965e7b13f7423212f1c1abdfc4a1c7", - "sha256:ee711804acdaf3ea7f0f2cd27f19478af993e730df8c8d923a678eb0e2572fba", - "sha256:f0634740b099b69caed081acd89692996b5504c59f86f39781b6bebc82b267f5", - "sha256:f92388e30bf6b5d2eceb3d7b05ee2df856635f74ce7d950a8f45d2b70c685a5b", - "sha256:fd6712a8a6dca12181a3a12316f97810927861e77f2a98029efd2c5cfc8546dc", - "sha256:fe5d98cdac07dd702bcd49f5723aacdd0af8c84d70fc82a5cc3781e52aedad52" + "sha256:009fa61710647cdc62eb373345248d8ebb93583a058990f7c4f9be46d90aa5b1", + "sha256:04a08d284da86882ec3a41a7c719833362ef891b09ee8e2fbb47cee352aa684a", + "sha256:07bff6742fba612da8d1b1f783c436338c6fdc6962828159827d5ca7d2b67935", + "sha256:09fb11ab1500e679fc1b01199d2fed24435499856e75043a9ac0d31dd48fd881", + "sha256:18a876449c9000c391dd3415ebc8454cd7bb9e488977b894886a2d7d018f16cd", + "sha256:18eec161411026dde49767bee4e5e8eeb8014879554811a62581dc7433628d5b", + "sha256:19353aead39fc115a4d6c598d6fb9fa26da7e69160a0443ebb49b02903e704e8", + "sha256:1b85c20e89c22ae902ca973df2afdd2d64d27dc4ffd2b29ebad8c805a213756b", + "sha256:1da3d7a35f918cee905facfa94bd00ae6091cadc06dca1b0b31b69ae02d41d1d", + "sha256:1e484ce83dae26cb40fcbd312d45b8ba921de7856a00339d867dd4ecf145a1e7", + "sha256:33f3cfdc492575f8af3225701301a7e62fc478358729820c9e0091aff5831378", + "sha256:3b0026c1129147befd4e5a8cf25da8dea1096fce371e7b2412e36d7254019c06", + "sha256:3d7713dddaa8081ed709a1fa2456a43f6a74b0f07d605da8441fd53fef334f69", + "sha256:3e2b4d69763103b9dc9b54c0952dc3cee05cedd06e28c0987fad7f84705b12c0", + "sha256:4ca5233a19a5ceca23546290f43addec2345789c7d65bb32f8b2668aa148351f", + "sha256:5214a289cf01ebbd65e49bae83709671dd9edb601891cf0ae8abf85f3c0b392f", + "sha256:52f8237654acbc78ea2fa6fb4a6a06e5b023b6da93f7889adfe2deba09473fad", + "sha256:5ed00894e0f8281c0b7c0494b4d3067c641fd90c8e5cf933089ec4cc9a48e491", + "sha256:6191961533d49c9d860964d42bada4d7ac3bb28502d984feb8034093f2012fa8", + "sha256:6f3ad2b1afe99c436563cd436d8693d4a12e2c4bd45f70c7705759ff7837fe53", + "sha256:739b743b7ca1ba4b4d64c321de6fccb49b562d0507ea06c817d9cc4faed5cd22", + "sha256:792efba0c0c6e4ee94f6dc95f305451733ee9230a1c7d51cb8e5301a549e0dfb", + "sha256:79d63ca40231ca3860859b39a92daa5219035ba9553da89a5e1b218550744121", + "sha256:83b28104edd58ad65748d2d0e60e0d97e3b91b3e90b4573ea6fe60de6811972c", + "sha256:85650446538cd2f606ca234634142a7ccd74cb6db7cfec250f76a4242e0f2431", + "sha256:8850eba6de6eb813036eb8dce353e40d60c8af48bbce107de82770b10d3aa525", + "sha256:9da445cb79e3f740756924c053edc952cde11a65ff5af8acfda3c0a1317136ef", + "sha256:9fabd5fbd24f5971085ffe53150d663f158f7d3050b25c95736e29ebf676d454", + "sha256:a0c377bc45e73c3f15f55d7de69fab270d174749d5b454ab0de502b15430ec2a", + "sha256:a1d3f7022a920d4a5e165d264581f1862e1c1b877ceeabb96fe98cec98125ae5", + "sha256:a315edef5c5610b0c75790142f49487e89ea34397fc247ae8aa890fe6d6dd057", + "sha256:a755cca2dcf023130b03bb671670301a992157d5c3151d838c0b68ef89894536", + "sha256:b1b20208ecdfffd7ca027955c4fe8972b28b30a4b3b80cf25099a08d3b20ed7c", + "sha256:b26d6f416891cef93411d6d478a25db275766081a5fb66368248293ef459f3be", + "sha256:b4ba4c30af7044ee987e61c88a5ffb76031ca0c53666bc85d823b7de55ddbc75", + "sha256:b71faf3b6e4d7058e1af1b8afedaf39a962db4a219affc8177009d8244ec10d4", + "sha256:cfa854bea525f8c913cb77e2bda724d94b965a0eb3bcfc4a645a9baa29bb86e2", + "sha256:dd9687359e466086b9f6fe6d8069034017f8b6ca3080944fae5709767ca6814e", + "sha256:de0c675fc2998a7eaa929c356ba49c84f53a892e9ab25e8ee7d8ebbbdcb2ac16", + "sha256:e2b4e33fea2ce9d3a14ea39191b169e41eb2ac995274f54ac8fd27519974bce8", + "sha256:f3d4a1a273dc141e03b72a553c11bc14dd7a27ec7654a071edcf83eb04f004bc", + "sha256:ff547cf4c1de7e104cad1a378431ff81efcb03e90e40871ee686107da5b91442" ], - "markers": "python_version >= '2.7' and python_version < '4'", - "version": "==3.5.65" + "version": "==3.5.59" }, "requests": { "hashes": [ @@ -1085,11 +1087,11 @@ }, "tqdm": { "hashes": [ - "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", - "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" + "sha256:2c44efa73b8914dba7807aefd09653ac63c22b5b4ea34f7a80973f418f1a3089", + "sha256:c23ac707e8e8aabb825e4d91f8e17247f9cc14b0d64dd9e97be0781e9e525bba" ], "index": "pypi", - "version": "==4.59.0" + "version": "==4.58.0" }, "twisted": { "extras": [ @@ -1119,11 +1121,11 @@ }, "urllib3": { "hashes": [ - "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", - "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" + "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", + "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.4" + "version": "==1.26.3" }, "uvicorn": { "extras": [ @@ -1352,69 +1354,68 @@ }, "coverage": { "hashes": [ - "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", - "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", - "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", - "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", - "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", - "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", - "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", - "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", - "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", - "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", - "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", - "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", - "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", - "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", - "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", - "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", - "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", - "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", - "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", - "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", - "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", - "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", - "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", - "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", - "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", - "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", - "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", - "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", - "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", - "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", - "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", - "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", - "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", - "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", - "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", - "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", - "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", - "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", - "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", - "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", - "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", - "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", - "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", - "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", - "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", - "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", - "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", - "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", - "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", - "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", - "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", - "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" + "sha256:03ed2a641e412e42cc35c244508cf186015c217f0e4d496bf6d7078ebe837ae7", + "sha256:04b14e45d6a8e159c9767ae57ecb34563ad93440fc1b26516a89ceb5b33c1ad5", + "sha256:0cdde51bfcf6b6bd862ee9be324521ec619b20590787d1655d005c3fb175005f", + "sha256:0f48fc7dc82ee14aeaedb986e175a429d24129b7eada1b7e94a864e4f0644dde", + "sha256:107d327071061fd4f4a2587d14c389a27e4e5c93c7cba5f1f59987181903902f", + "sha256:1375bb8b88cb050a2d4e0da901001347a44302aeadb8ceb4b6e5aa373b8ea68f", + "sha256:14a9f1887591684fb59fdba8feef7123a0da2424b0652e1b58dd5b9a7bb1188c", + "sha256:16baa799ec09cc0dcb43a10680573269d407c159325972dd7114ee7649e56c66", + "sha256:1b811662ecf72eb2d08872731636aee6559cae21862c36f74703be727b45df90", + "sha256:1ccae21a076d3d5f471700f6d30eb486da1626c380b23c70ae32ab823e453337", + "sha256:2f2cf7a42d4b7654c9a67b9d091ec24374f7c58794858bff632a2039cb15984d", + "sha256:322549b880b2d746a7672bf6ff9ed3f895e9c9f108b714e7360292aa5c5d7cf4", + "sha256:32ab83016c24c5cf3db2943286b85b0a172dae08c58d0f53875235219b676409", + "sha256:3fe50f1cac369b02d34ad904dfe0771acc483f82a1b54c5e93632916ba847b37", + "sha256:4a780807e80479f281d47ee4af2eb2df3e4ccf4723484f77da0bb49d027e40a1", + "sha256:4a8eb7785bd23565b542b01fb39115a975fefb4a82f23d407503eee2c0106247", + "sha256:4b40b794775df10d7e3ea677108dd581bfec796235750c617d461874178a67f6", + "sha256:5bee3970617b3d74759b2d2df2f6a327d372f9732f9ccbf03fa591b5f7581e39", + "sha256:60a3307a84ec60578accd35d7f0c71a3a971430ed7eca6567399d2b50ef37b8c", + "sha256:6625e52b6f346a283c3d563d1fd8bae8956daafc64bb5bbd2b8f8a07608e3994", + "sha256:66a5aae8233d766a877c5ef293ec5ab9520929c2578fd2069308a98b7374ea8c", + "sha256:68fb816a5dd901c6aff352ce49e2a0ffadacdf9b6fae282a69e7a16a02dad5fb", + "sha256:6b588b5cf51dc0fd1c9e19f622457cc74b7d26fe295432e434525f1c0fae02bc", + "sha256:6c4d7165a4e8f41eca6b990c12ee7f44fef3932fac48ca32cecb3a1b2223c21f", + "sha256:6d2e262e5e8da6fa56e774fb8e2643417351427604c2b177f8e8c5f75fc928ca", + "sha256:6d9c88b787638a451f41f97446a1c9fd416e669b4d9717ae4615bd29de1ac135", + "sha256:755c56beeacac6a24c8e1074f89f34f4373abce8b662470d3aa719ae304931f3", + "sha256:7e40d3f8eb472c1509b12ac2a7e24158ec352fc8567b77ab02c0db053927e339", + "sha256:812eaf4939ef2284d29653bcfee9665f11f013724f07258928f849a2306ea9f9", + "sha256:84df004223fd0550d0ea7a37882e5c889f3c6d45535c639ce9802293b39cd5c9", + "sha256:859f0add98707b182b4867359e12bde806b82483fb12a9ae868a77880fc3b7af", + "sha256:87c4b38288f71acd2106f5d94f575bc2136ea2887fdb5dfe18003c881fa6b370", + "sha256:89fc12c6371bf963809abc46cced4a01ca4f99cba17be5e7d416ed7ef1245d19", + "sha256:9564ac7eb1652c3701ac691ca72934dd3009997c81266807aef924012df2f4b3", + "sha256:9754a5c265f991317de2bac0c70a746efc2b695cf4d49f5d2cddeac36544fb44", + "sha256:a565f48c4aae72d1d3d3f8e8fb7218f5609c964e9c6f68604608e5958b9c60c3", + "sha256:a636160680c6e526b84f85d304e2f0bb4e94f8284dd765a1911de9a40450b10a", + "sha256:a839e25f07e428a87d17d857d9935dd743130e77ff46524abb992b962eb2076c", + "sha256:ae9702c099546e72000d76758b5efec2dd937ba5d746ec8d0563d2fca0f9bc2e", + "sha256:b62046592b44263fa7570f1117d372ae3f310222af1fc1407416f037fb3af21b", + "sha256:b7f7421841f8db443855d2854e25914a79a1ff48ae92f70d0a5c2f8907ab98c9", + "sha256:ba7ca81b6d60a9f7a0b4b4e175dcc38e8fef4992673d9d6e6879fd6de00dd9b8", + "sha256:bb32ca14b4d04e172c541c69eec5f385f9a075b38fb22d765d8b0ce3af3a0c22", + "sha256:c0ff1c1b4d13e2240821ef23c1efb1f009207cb3f56e16986f713c2b0e7cd37f", + "sha256:c669b440ce46ae3abe9b2d44a913b5fd86bb19eb14a8701e88e3918902ecd345", + "sha256:c67734cff78383a1f23ceba3b3239c7deefc62ac2b05fa6a47bcd565771e5880", + "sha256:c6809ebcbf6c1049002b9ac09c127ae43929042ec1f1dbd8bb1615f7cd9f70a0", + "sha256:cd601187476c6bed26a0398353212684c427e10a903aeafa6da40c63309d438b", + "sha256:ebfa374067af240d079ef97b8064478f3bf71038b78b017eb6ec93ede1b6bcec", + "sha256:fbb17c0d0822684b7d6c09915677a32319f16ff1115df5ec05bdcaaee40b35f3", + "sha256:fff1f3a586246110f34dc762098b5afd2de88de507559e63553d7da643053786" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==5.5" + "version": "==5.4" }, "coveralls": { "hashes": [ - "sha256:7bd173b3425733661ba3063c88f180127cc2b20e9740686f86d2622b31b41385", - "sha256:cbb942ae5ef3d2b55388cb5b43e93a269544911535f1e750e1c656aef019ce60" + "sha256:5399c0565ab822a70a477f7031f6c88a9dd196b3de2877b3facb43b51bd13434", + "sha256:f8384968c57dee4b7133ae701ecdad88e85e30597d496dcba0d7fbb470dca41f" ], "index": "pypi", - "version": "==3.0.1" + "version": "==3.0.0" }, "distlib": { "hashes": [ @@ -1456,11 +1457,11 @@ }, "faker": { "hashes": [ - "sha256:60a7263104ef7a14ecfe2af1142d53924aa534ccec85cea82bb67b2b32f84421", - "sha256:f43ac743c34affb1c7fccca8b06450371cd482b6ddcb4110e420acb24356e70b" + "sha256:90b69e9e05d622edb2fa5ebfda7bef41c88675cace85e72689fde5b8723d00a3", + "sha256:da395fe545f40d4366b82b1a02448847a4586bd2b28af393b3edbd1e45d1e0fc" ], "markers": "python_version >= '3.6'", - "version": "==6.6.2" + "version": "==6.5.0" }, "filelock": { "hashes": [ @@ -1590,19 +1591,19 @@ }, "pycodestyle": { "hashes": [ - "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068", - "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef" + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" ], "index": "pypi", - "version": "==2.7.0" + "version": "==2.6.0" }, "pygments": { "hashes": [ - "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", - "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" + "sha256:37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0", + "sha256:b21b072d0ccdf29297a82a2363359d99623597b8a265b8081760e4d0f7153c88" ], "markers": "python_version >= '3.5'", - "version": "==2.8.1" + "version": "==2.8.0" }, "pyparsing": { "hashes": [ @@ -1795,27 +1796,27 @@ }, "tox": { "hashes": [ - "sha256:05a4dbd5e4d3d8269b72b55600f0b0303e2eb47ad5c6fe76d3576f4c58d93661", - "sha256:e007673f3595cede9b17a7c4962389e4305d4a3682a6c5a4159a1453b4f326aa" + "sha256:89afa9c59c04beb55eda789c7a65feb1a70fde117f85f1bd1c27c66758456e60", + "sha256:ed1e650cf6368bcbc4a071eeeba363c480920e0ed8a9ad1793c7caaa5ad33d49" ], "index": "pypi", - "version": "==3.23.0" + "version": "==3.22.0" }, "urllib3": { "hashes": [ - "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", - "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" + "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", + "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.4" + "version": "==1.26.3" }, "virtualenv": { "hashes": [ - "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107", - "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c" + "sha256:147b43894e51dd6bba882cf9c282447f780e2251cd35172403745fc381a0a80d", + "sha256:2be72df684b74df0ea47679a7df93fd0e04e72520022c57b479d8f881485dbe3" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.4.3" + "version": "==20.4.2" } } } diff --git a/requirements.txt b/requirements.txt index de268fc2e..947a30350 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,11 +8,11 @@ -i https://pypi.python.org/simple --extra-index-url https://www.piwheels.org/simple aioredis==1.3.1 -arrow==1.0.3; python_version >= '3.6' +arrow==1.0.1; python_version >= '3.6' asgiref==3.3.1; python_version >= '3.5' async-timeout==3.0.1; python_full_version >= '3.5.3' attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -autobahn==21.3.1; python_version >= '3.7' +autobahn==21.2.2; python_version >= '3.7' automat==20.2.0 blessed==1.18.0 certifi==2020.12.5 @@ -43,9 +43,9 @@ httptools==0.1.1 humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' hyperlink==21.0.0 idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -imap-tools==0.39.0 +imap-tools==0.38.1 img2pdf==0.4.0 -incremental==21.3.0 +incremental==17.5.0 inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' inotifyrecursive==0.3.5 joblib==1.0.1; python_version >= '3.6' @@ -53,11 +53,11 @@ langdetect==1.0.8 lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' msgpack==1.0.2 numpy==1.19.5 -ocrmypdf==11.7.1 +ocrmypdf==11.7.0 pathvalidate==2.3.2 pdfminer.six==20201018 -pikepdf==2.9.0 -pillow==8.1.2 +pikepdf==2.5.2 +pillow==8.1.0 pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' portalocker==2.2.1; python_version >= '3' psycopg2-binary==2.8.6 @@ -67,14 +67,14 @@ pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' python-dateutil==2.8.1 python-dotenv==0.15.0 -python-gnupg==0.4.7 +python-gnupg==0.4.6 python-levenshtein==0.12.2 python-magic==0.4.22 pytz==2021.1 pyyaml==5.4.1 redis==3.5.3 -regex==2021.3.17 -reportlab==3.5.65; python_version >= '2.7' and python_version < '4' +regex==2020.11.13 +reportlab==3.5.59 requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' scikit-learn==0.24.0 scipy==1.5.4 @@ -84,11 +84,11 @@ sortedcontainers==2.3.0 sqlparse==0.4.1; python_version >= '3.5' threadpoolctl==2.1.0; python_version >= '3.5' tika==1.24 -tqdm==4.59.0 +tqdm==4.58.0 twisted[tls]==21.2.0; python_full_version >= '3.5.4' txaio==21.2.1; python_version >= '3.6' tzlocal==2.1 -urllib3==1.26.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +urllib3==1.26.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' uvicorn[standard]==0.13.4 uvloop==0.14.0 watchdog==1.0.2 From d3514fc5f9f367360be9cbd3f80e00169d68483c Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 21 Mar 2021 12:20:10 +0100 Subject: [PATCH 29/93] update dependencies --- Dockerfile | 29 +-- Pipfile | 6 +- Pipfile.lock | 594 +++++++++++++++++++++++------------------------ requirements.txt | 26 +-- 4 files changed, 322 insertions(+), 333 deletions(-) diff --git a/Dockerfile b/Dockerfile index c94b7030f..9e7a34aa4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,25 +11,27 @@ RUN ./configure && make FROM python:3.7-slim # Binary dependencies -RUN apt-get update \ +RUN echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \ + && apt-get update \ && apt-get -y --no-install-recommends install \ # Basic dependencies curl \ - file \ - # fonts for text file thumbnail generation - fonts-liberation \ - # for making translations further down - gettext \ gnupg \ imagemagick \ + gettext \ + sudo \ + tzdata \ + # fonts for text file thumbnail generation + fonts-liberation \ # for Numpy libatlas-base-dev \ libxslt1-dev \ - mime-support \ # thumbnail size reduction optipng \ - sudo \ - tzdata \ + # Mime type detection + file \ + libmagic-dev \ + mime-support \ # OCRmyPDF dependencies ghostscript \ icc-profiles-free \ @@ -45,14 +47,7 @@ RUN apt-get update \ tesseract-ocr-spa \ unpaper \ zlib1g \ - -# This pulls in updated dependencies from bullseye to fix some issues with file type detection. -# TODO: Remove this once bullseye releases. - && echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \ - && apt-get update \ - && apt-get install --no-install-recommends -y file libmagic-dev \ - && rm -rf /var/lib/apt/lists/* \ - && rm /etc/apt/sources.list.d/bullseye.list + && rm -rf /var/lib/apt/lists/* # copy jbig2enc COPY --from=jbig2enc /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/ diff --git a/Pipfile b/Pipfile index 4d9836e68..c80f734f2 100644 --- a/Pipfile +++ b/Pipfile @@ -24,9 +24,8 @@ langdetect = "*" # numpy 1.20.0 drops python 3.6 support numpy = "~=1.19.5" pathvalidate = "*" -# pinned to 8.1.0, since aarch64 wheels might not be available beyond that https://github.com/python-pillow/Pillow/issues/5202 -pillow = "==8.1.0" -pikepdf = "~=2.5.0" +pillow = "~=8.1" +pikepdf = "~=2.5" python-gnupg = "*" python-dotenv = "*" python-dateutil = "*" @@ -52,7 +51,6 @@ uvicorn = {extras = ["standard"], version = "*"} concurrent-log-handler = "*" # uvloop 0.15+ incompatible with python 3.6 uvloop = "~=0.14.0" -# TODO: keep an eye on piwheel builds and update this once available (https://www.piwheels.org/project/cryptography/) cryptography = "~=3.4" "pdfminer.six" = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 98d8655eb..7b036e19a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "49f8a0718a7982bc4ca7e1315c17849523b0d29c38f13cff88f8f883e0e9943a" + "sha256": "e1b8a4e731cfb66e6e4cb43aa9160eeccdaf4c459710b197f7c7bf3e95825f6a" }, "pipfile-spec": 6, "requires": {}, @@ -28,11 +28,11 @@ }, "arrow": { "hashes": [ - "sha256:7909d9fd30d32fa8fd173fdeb3f7125aaf6dedd1a837276fe1d8cea2c0e86d76", - "sha256:b1e106a0ab754e540f4aeb08747900830b688adef02d81240e65afc0e781a870" + "sha256:3515630f11a15c61dcb4cdd245883270dd334c83f3e639824e65a4b79cc48543", + "sha256:399c9c8ae732270e1aa58ead835a79a40d7be8aa109c579898eb41029b5a231d" ], "markers": "python_version >= '3.6'", - "version": "==1.0.1" + "version": "==1.0.3" }, "asgiref": { "hashes": [ @@ -60,11 +60,11 @@ }, "autobahn": { "hashes": [ - "sha256:884f79c50fdc55ade2c315946a9caa145e8b10075eee9d2c2594ea5e8f5226aa", - "sha256:bf7a9d302a34d0f719d43c57f65ca1f2f5c982dd6ea0c11e1e190ef6f43710fe" + "sha256:9195df8af03b0ff29ccd4b7f5abbde957ee90273465942205f9a1bad6c3f07ac", + "sha256:e126c1f583e872fb59e79d36977cfa1f2d0a8a79f90ae31f406faae7664b8e03" ], "markers": "python_version >= '3.7'", - "version": "==21.2.2" + "version": "==21.3.1" }, "automat": { "hashes": [ @@ -413,11 +413,11 @@ }, "imap-tools": { "hashes": [ - "sha256:44641716f0c5c07df78c5713405675fac50220d4f8e2906c9ed4aabd9c356fa8", - "sha256:bab9a6edf848a58bdd3959ba55e0eb75039ff188a3779371d0b8db674a4945e8" + "sha256:00fa5b5046c0437976ad7dd5e45b1847bfd5d14bb858c9b19a5cf2994bba96d9", + "sha256:3b4d0a911bc48ea7c0beac6a15b6f65b6fdf2b066a67cd3536253ec98e401e83" ], "index": "pypi", - "version": "==0.38.1" + "version": "==0.39.0" }, "img2pdf": { "hashes": [ @@ -428,10 +428,10 @@ }, "incremental": { "hashes": [ - "sha256:717e12246dddf231a349175f48d74d93e2897244939173b01974ab6661406b9f", - "sha256:7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3" + "sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57", + "sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321" ], - "version": "==17.5.0" + "version": "==21.3.0" }, "inotify-simple": { "hashes": [ @@ -589,11 +589,11 @@ }, "ocrmypdf": { "hashes": [ - "sha256:2fca4046e3a33e5902dd89c3003a3f31c7d584dc43f14c7c97f57fce20d2e469", - "sha256:5c386fcf2c0f2635533c2bad0edcd2d455f667a134d180dc61cbb3d4d5f0c8e2" + "sha256:2eda9aeef0c6326af8af9605a8b5903ed6ae4a4537d4046d16ad8bb7ff021ec2", + "sha256:4befdf50b6ed3fe3bb9d0ab1801b213e56138e21ba5b4b3f3cada51c72b7a314" ], "index": "pypi", - "version": "==11.7.0" + "version": "==11.7.2" }, "pathvalidate": { "hashes": [ @@ -613,71 +613,72 @@ }, "pikepdf": { "hashes": [ - "sha256:02815df9499d3a6dfac2e07e4d2fdbe25fcbefae208970e76bff90af4a402d49", - "sha256:06b0c3004cc9e9068ebc62bb59c3c3a54e7af13867f4a326690d79c69a1cf288", - "sha256:1a471c6ca288fbcd0e1b0e128ef12bb14c5e7db745786308ba292fc7cff30bb5", - "sha256:489ed0fd1281beb0343a34fe8b9d94407c440ed0419ab2e6f5ea297a41824a31", - "sha256:5106b27f7085ed449e057b9988f07c80a87292d2bf46c585a8635ac7a3ccf0d5", - "sha256:51acffba6f3d21674eea7a0432ce1adaf0743641d57844a5e3dc92b4a7e81c85", - "sha256:53d694d70dd072a47bd2dd71329dcef0f809dcd8084d1d11c31baf3b64cd345c", - "sha256:6a640fef52dc785abd354d6800a52ecc02656c98dbfc2ecde559323b001bd43f", - "sha256:7006ef95f847412605dea6e772019f637949eaeaf65363d5d6afd9aa96bf5623", - "sha256:81e13b62877dbc089095e7efa03c27834bdf6b49d404d064cb227b0e179ce049", - "sha256:8fc3e97b24dafbd4b1ac057c8f144c18467ce55d342a1a8c42688890ead58ef3", - "sha256:9158dc4d3ef4e2301fb1879d5825530fdb32143ced770d60fa8e5badeee70a35", - "sha256:961337a10b42bd656b59116ce1c574eafd515b45a513221df6ae1f11734bfb6c", - "sha256:994ccac972357a7b9b147217e1beea2f7688697944b862dbb2a3e64aa9a5ff14", - "sha256:a8e9abf7db0351357b55c3f935979e7dc14f3f259a25d15bcc86abce730955a7", - "sha256:b836eda7f70b9dd75ccdeaf4e78b38393118a66821a69a10054b1430f945d1fd", - "sha256:b859a225f6bd953472c50f4df612b4575df646e560189e3720310ad65b6805a0", - "sha256:cae106bd461cfad73c554c09f6db1d5f2c6a28f5b8cb0602b63046840f488226", - "sha256:cdc75b8fa5a650f4fc91214a315358fde7470e09b95a00981b73a7c4ac5ddb97", - "sha256:e2c28da4f37ad9a3efbedbbfc6f1084941bde43903d30dfdbb338d5ba94c9f50", - "sha256:e596bd8fdbf40bfb8dc8068cdbc7e5b72052188d1ad8ca84da9d6b77658a8b31", - "sha256:ee957b9c60b6def20cbdf656d35859ce211eec02dafa3abb9d5ca937d32a3c3b", - "sha256:f9428d4b1f70af4f4560be4dccbbc5ab5308c00c5b62ed2f1c44ce9e2591b3d2" + "sha256:00372f75f630b1eedd22022cad622c7313b7a42c76b6aa9a91cabaa93915cbf0", + "sha256:0168b05e020f8ac3f027c61841bb222bb0876fdc21e1b0e44cfca8c7f188b17a", + "sha256:07a3b156766a45ef04b6919116468456c7d1fa05ac1a5a5999f08fd6213a7ada", + "sha256:087edf03ef41f76c84d7f65cfd325fbea6e684a134463f0d43f57c3e787c57f1", + "sha256:0f2f2dcf3ceab6572cb6f3dc893b49e5db65232a13de03ae87a66aa220e47d96", + "sha256:27ef5649d4a0d511bdffa5752b9a014441d8c09bf955479db53c41ffb94ee1ca", + "sha256:3096d128df599d48a69bbe6a32ecd3c4b8b2219dfb94c91509c781e94c20abb9", + "sha256:45a5988f7db8c428beae7dd648df30431e1d7892f3901f4c20bb618ed3e29244", + "sha256:5e9d5789ace2ac4007916848a5cc59bc4a1aa020a794cb384538ca0f0b9b9fe6", + "sha256:63b0a1b4c43deb618f3ebaed0e5861bff658916ea02ac2f6adacf8912b702628", + "sha256:68523f606575aef92a1f6d6de030d5e82f7e3e8712f53e36c9fa5c635e15794e", + "sha256:6bea9cf387709dd478a85f737f972a910bb0dbfa055ee636a41f0c425a769057", + "sha256:71fe23a61607ac85cf357baef42be55d525f5d5c9f560482862beaf59e5dc2bc", + "sha256:780082b54e502fb76af082dc6a1cbed635205a319aa54a9e0f0570bed20c9edf", + "sha256:7a816f4bb461366dad0165a1c81294d5e9a60009cbb5c803e2519eb0d250e757", + "sha256:88373178c1020b9f391f929e5f86056a9d920301f82e5489146af629fa4654d0", + "sha256:96c8bf46ac27482a9ca00565f41ddde546fff35c50db61eefaeb88849bcb9895", + "sha256:99c19cf0dd0fc89fc9e6a0de61e974e34d4111dd69802aeaee3e61fb1a74a3d8", + "sha256:bad118d9104fffc06664d51c8716a905e5d712b85ed65edc56a708486803f70f", + "sha256:bae06503ed36167b2ea5ea25003692d3edbf95bea2e67a1d595984c91d783eb4", + "sha256:cd73a1e82cfa5d378adccf9c44b0060c2d3c5e36958f0b5ecedb3f8e81742582", + "sha256:dd65214e23e2cc883af8c2341e6fe7ae71225fa644517ac25110d6ad2b31f026", + "sha256:fd1e339322c94b0c398aaa37d517c24a3db7bbda4fdc6bf57af3894293b8e1a6" ], "index": "pypi", - "version": "==2.5.2" + "version": "==2.9.1" }, "pillow": { "hashes": [ - "sha256:165c88bc9d8dba670110c689e3cc5c71dbe4bfb984ffa7cbebf1fac9554071d6", - "sha256:1d208e670abfeb41b6143537a681299ef86e92d2a3dac299d3cd6830d5c7bded", - "sha256:22d070ca2e60c99929ef274cfced04294d2368193e935c5d6febfd8b601bf865", - "sha256:2353834b2c49b95e1313fb34edf18fca4d57446675d05298bb694bca4b194174", - "sha256:39725acf2d2e9c17356e6835dccebe7a697db55f25a09207e38b835d5e1bc032", - "sha256:3de6b2ee4f78c6b3d89d184ade5d8fa68af0848f9b6b6da2b9ab7943ec46971a", - "sha256:47c0d93ee9c8b181f353dbead6530b26980fe4f5485aa18be8f1fd3c3cbc685e", - "sha256:5e2fe3bb2363b862671eba632537cd3a823847db4d98be95690b7e382f3d6378", - "sha256:604815c55fd92e735f9738f65dabf4edc3e79f88541c221d292faec1904a4b17", - "sha256:6c5275bd82711cd3dcd0af8ce0bb99113ae8911fc2952805f1d012de7d600a4c", - "sha256:731ca5aabe9085160cf68b2dbef95fc1991015bc0a3a6ea46a371ab88f3d0913", - "sha256:7612520e5e1a371d77e1d1ca3a3ee6227eef00d0a9cddb4ef7ecb0b7396eddf7", - "sha256:7916cbc94f1c6b1301ac04510d0881b9e9feb20ae34094d3615a8a7c3db0dcc0", - "sha256:81c3fa9a75d9f1afafdb916d5995633f319db09bd773cb56b8e39f1e98d90820", - "sha256:887668e792b7edbfb1d3c9d8b5d8c859269a0f0eba4dda562adb95500f60dbba", - "sha256:8c183b5c60544b49e0a66f924b18c526dfd37774811b627f70836fe01711abd3", - "sha256:93a473b53cc6e0b3ce6bf51b1b95b7b1e7e6084be3a07e40f79b42e83503fbf2", - "sha256:96d4dc103d1a0fa6d47c6c55a47de5f5dafd5ef0114fa10c85a1fd8e0216284b", - "sha256:a3d3e086474ef12ef13d42e5f9b7bbf09d39cf6bd4940f982263d6954b13f6a9", - "sha256:b02a0b9f332086657852b1f7cb380f6a42403a6d9c42a4c34a561aa4530d5234", - "sha256:b09e10ec453de97f9a23a5aa5e30b334195e8d2ddd1ce76cc32e52ba63c8b31d", - "sha256:b6f00ad5ebe846cc91763b1d0c6d30a8042e02b2316e27b05de04fa6ec831ec5", - "sha256:bba80df38cfc17f490ec651c73bb37cd896bc2400cfba27d078c2135223c1206", - "sha256:c3d911614b008e8a576b8e5303e3db29224b455d3d66d1b2848ba6ca83f9ece9", - "sha256:ca20739e303254287138234485579b28cb0d524401f83d5129b5ff9d606cb0a8", - "sha256:cb192176b477d49b0a327b2a5a4979552b7a58cd42037034316b8018ac3ebb59", - "sha256:cdbbe7dff4a677fb555a54f9bc0450f2a21a93c5ba2b44e09e54fcb72d2bd13d", - "sha256:cf6e33d92b1526190a1de904df21663c46a456758c0424e4f947ae9aa6088bf7", - "sha256:d355502dce85ade85a2511b40b4c61a128902f246504f7de29bbeec1ae27933a", - "sha256:d673c4990acd016229a5c1c4ee8a9e6d8f481b27ade5fc3d95938697fa443ce0", - "sha256:dc577f4cfdda354db3ae37a572428a90ffdbe4e51eda7849bf442fb803f09c9b", - "sha256:dd9eef866c70d2cbbea1ae58134eaffda0d4bfea403025f4db6859724b18ab3d", - "sha256:f50e7a98b0453f39000619d845be8b06e611e56ee6e8186f7f60c3b1e2f0feae" + "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af", + "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1", + "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c", + "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55", + "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060", + "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e", + "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8", + "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e", + "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0", + "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328", + "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238", + "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733", + "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03", + "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06", + "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71", + "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b", + "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6", + "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910", + "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce", + "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28", + "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d", + "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb", + "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6", + "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09", + "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be", + "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0", + "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44", + "sha256:bd08a7e01d388c5e0b5b46b52081e01dc96ef226aeed13fa1d7af94b81d4e93b", + "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1", + "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341", + "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34", + "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2", + "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a", + "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5" ], "index": "pypi", - "version": "==8.1.0" + "version": "==8.1.2" }, "pluggy": { "hashes": [ @@ -808,11 +809,11 @@ }, "python-gnupg": { "hashes": [ - "sha256:3aa0884b3bd414652c2385b9df39e7b87272c2eca1b8fcc3089bc9e58652019a", - "sha256:cba3566e8a8fb7bb417d6897a6e17bfc7f9371052e57eb0057783c07d762a679" + "sha256:2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7", + "sha256:3ff5b1bf5e397de6e1fe41a7c0f403dad4e242ac92b345f440eaecfb72a7ebae" ], "index": "pypi", - "version": "==0.4.6" + "version": "==0.4.7" }, "python-levenshtein": { "hashes": [ @@ -851,15 +852,23 @@ "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", + "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", + "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", + "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", + "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", + "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc" + "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", + "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", + "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", + "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" ], "version": "==5.4.1" }, @@ -874,98 +883,87 @@ }, "regex": { "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:80ef188c0e47a6c964eed71c55a73c245f8daf9f0a4a9d804e91275afb468ca4", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:842fb985b2b99a82a2b145b6bbd588c5f5cfd83693402920fcb985d515794666", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139", + "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5", + "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa", + "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3", + "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df", + "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f", + "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e", + "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd", + "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d", + "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e", + "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f", + "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa", + "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68", + "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643", + "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3", + "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be", + "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578", + "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c", + "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5", + "sha256:63f861afb575ee39fc42df919ca6c625b534cf51b2b95d54fc97f85d293a22a2", + "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba", + "sha256:808276b84e69346635da368f4b9d37ab8b27ce20a7b30e9cbb3717d1e81c78ec", + "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe", + "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c", + "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a", + "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb", + "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d", + "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38", + "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18", + "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce", + "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa", + "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6", + "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5", + "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90", + "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c", + "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106", + "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7", + "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0", + "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689", + "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd", + "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932", + "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf", + "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14" ], - "version": "==2020.11.13" + "version": "==2021.3.17" }, "reportlab": { "hashes": [ - "sha256:009fa61710647cdc62eb373345248d8ebb93583a058990f7c4f9be46d90aa5b1", - "sha256:04a08d284da86882ec3a41a7c719833362ef891b09ee8e2fbb47cee352aa684a", - "sha256:07bff6742fba612da8d1b1f783c436338c6fdc6962828159827d5ca7d2b67935", - "sha256:09fb11ab1500e679fc1b01199d2fed24435499856e75043a9ac0d31dd48fd881", - "sha256:18a876449c9000c391dd3415ebc8454cd7bb9e488977b894886a2d7d018f16cd", - "sha256:18eec161411026dde49767bee4e5e8eeb8014879554811a62581dc7433628d5b", - "sha256:19353aead39fc115a4d6c598d6fb9fa26da7e69160a0443ebb49b02903e704e8", - "sha256:1b85c20e89c22ae902ca973df2afdd2d64d27dc4ffd2b29ebad8c805a213756b", - "sha256:1da3d7a35f918cee905facfa94bd00ae6091cadc06dca1b0b31b69ae02d41d1d", - "sha256:1e484ce83dae26cb40fcbd312d45b8ba921de7856a00339d867dd4ecf145a1e7", - "sha256:33f3cfdc492575f8af3225701301a7e62fc478358729820c9e0091aff5831378", - "sha256:3b0026c1129147befd4e5a8cf25da8dea1096fce371e7b2412e36d7254019c06", - "sha256:3d7713dddaa8081ed709a1fa2456a43f6a74b0f07d605da8441fd53fef334f69", - "sha256:3e2b4d69763103b9dc9b54c0952dc3cee05cedd06e28c0987fad7f84705b12c0", - "sha256:4ca5233a19a5ceca23546290f43addec2345789c7d65bb32f8b2668aa148351f", - "sha256:5214a289cf01ebbd65e49bae83709671dd9edb601891cf0ae8abf85f3c0b392f", - "sha256:52f8237654acbc78ea2fa6fb4a6a06e5b023b6da93f7889adfe2deba09473fad", - "sha256:5ed00894e0f8281c0b7c0494b4d3067c641fd90c8e5cf933089ec4cc9a48e491", - "sha256:6191961533d49c9d860964d42bada4d7ac3bb28502d984feb8034093f2012fa8", - "sha256:6f3ad2b1afe99c436563cd436d8693d4a12e2c4bd45f70c7705759ff7837fe53", - "sha256:739b743b7ca1ba4b4d64c321de6fccb49b562d0507ea06c817d9cc4faed5cd22", - "sha256:792efba0c0c6e4ee94f6dc95f305451733ee9230a1c7d51cb8e5301a549e0dfb", - "sha256:79d63ca40231ca3860859b39a92daa5219035ba9553da89a5e1b218550744121", - "sha256:83b28104edd58ad65748d2d0e60e0d97e3b91b3e90b4573ea6fe60de6811972c", - "sha256:85650446538cd2f606ca234634142a7ccd74cb6db7cfec250f76a4242e0f2431", - "sha256:8850eba6de6eb813036eb8dce353e40d60c8af48bbce107de82770b10d3aa525", - "sha256:9da445cb79e3f740756924c053edc952cde11a65ff5af8acfda3c0a1317136ef", - "sha256:9fabd5fbd24f5971085ffe53150d663f158f7d3050b25c95736e29ebf676d454", - "sha256:a0c377bc45e73c3f15f55d7de69fab270d174749d5b454ab0de502b15430ec2a", - "sha256:a1d3f7022a920d4a5e165d264581f1862e1c1b877ceeabb96fe98cec98125ae5", - "sha256:a315edef5c5610b0c75790142f49487e89ea34397fc247ae8aa890fe6d6dd057", - "sha256:a755cca2dcf023130b03bb671670301a992157d5c3151d838c0b68ef89894536", - "sha256:b1b20208ecdfffd7ca027955c4fe8972b28b30a4b3b80cf25099a08d3b20ed7c", - "sha256:b26d6f416891cef93411d6d478a25db275766081a5fb66368248293ef459f3be", - "sha256:b4ba4c30af7044ee987e61c88a5ffb76031ca0c53666bc85d823b7de55ddbc75", - "sha256:b71faf3b6e4d7058e1af1b8afedaf39a962db4a219affc8177009d8244ec10d4", - "sha256:cfa854bea525f8c913cb77e2bda724d94b965a0eb3bcfc4a645a9baa29bb86e2", - "sha256:dd9687359e466086b9f6fe6d8069034017f8b6ca3080944fae5709767ca6814e", - "sha256:de0c675fc2998a7eaa929c356ba49c84f53a892e9ab25e8ee7d8ebbbdcb2ac16", - "sha256:e2b4e33fea2ce9d3a14ea39191b169e41eb2ac995274f54ac8fd27519974bce8", - "sha256:f3d4a1a273dc141e03b72a553c11bc14dd7a27ec7654a071edcf83eb04f004bc", - "sha256:ff547cf4c1de7e104cad1a378431ff81efcb03e90e40871ee686107da5b91442" + "sha256:13ac281c8d5c904089022377bd9646c910deae63e7342dd9552088d330d73e89", + "sha256:14f38792176e41642f9ea7a83678df156d8abb3a90bbe396425a200614eed03d", + "sha256:15aeb8f8bdad5fa666d18a7d229bc7eb8f4e5a1dc8423931b3e690b6ce5021bc", + "sha256:1db86072b0ec3e5f9c5ab2980c61658ae3acee86e204b0d4c48112bc5cffd2f5", + "sha256:202109018f40d620812cf30dc300ea73385aed305d1de63c42229cb881821ffb", + "sha256:30e82ec00c566c4d8bfdcca0b93131749cc51ea0884395054d2afedf266f3f29", + "sha256:374252d118719e7b9b1bd0e5ce3f7083b5aaaeb1a9422983aa63b116621d34ae", + "sha256:3c1be70cf168ed29a449a009d7cad6dcc3e45d129f7ddb07b3854b8cee8d125b", + "sha256:45fe94e90c6b48c4ae877339b777fcc4f822795c1d4c7a0d6cffaf24987199b1", + "sha256:536f1ebf951cd48623974ba160c95e7c7219d4aa5664cdae17dffa2f19cf1cf3", + "sha256:54827fa29843b15834e5bc618508f245f3addee7bf980eebacfebb74f150e611", + "sha256:55c903f8aea4fbfca26f9f821c77c576c9791ce487ddfa3ffa1f2c44c5af79e2", + "sha256:63fba51babad0047def4ffaa41d0065248ca39d680e98dc9e3010de5425539b4", + "sha256:6fc3f01e9005ac53d639eafe22b3852937e42161d74a7d0681bc83f48cff1b30", + "sha256:6ff269ea41daa5cfd6124b13da1481fc40db2539fa82107dd9675f6670d95c25", + "sha256:7711fcdb0c1edfb48dcffd7e73430e9b5ceba0816a37fd269a327cd13088bcaf", + "sha256:7d4a59975a743eddc15895014d738bb38cbdecdd2496f651fb05779486bcb536", + "sha256:879e1123d49e0df76c478cccdacd4a9f4a2b4b445beec3d72a05f8b3775daa84", + "sha256:aa1ec9557c0d9dbe3eceb6581220aa1d77c404b8ff3decb40eae0bf075512142", + "sha256:ad0d3f657addd9c4215faf2699eafd54e89e404e35d696dda9dbe3c126132900", + "sha256:b784685141fe3fc26d8f703b21f89073a0ce46a800d06b7d58f2ceb481a65644", + "sha256:bd0870c840d47a6639df17c54f0c5676a06ab6798bb92ed8ef9b983c0326c2d0", + "sha256:bdb0781d1d4d1ed0745f5f22c06ed60760865511e65046432d145f55fd908f60", + "sha256:ce04f4bf9d15895bbfee6d53eb168cffd9fcedc625f0fcb5c343d809d0b37271", + "sha256:cf76145a89bb0ebf562c3252ce4d254547fe59daeb80ce2076d89867e9c03735", + "sha256:e8ebb34f30a11ac4196ae83d0b4f1f87bbe326c0f8a6eb4b768e622ec7f017f5", + "sha256:ed4b80c24a4e5e91927aa95901cce3f6fef7551e94a72ac5a2fa22740708cbff", + "sha256:f8a8f8b62cc150f71310e444ded4e32e7136c75aced6738877c3328e84338c94", + "sha256:fdd08e1ef7bcf1dc92868bc527587286c89d92c141fed5ed89ccacc1e8f26ee8", + "sha256:fdf604246a5318157a581a483ceb0aab858582b478b24016768fdaff1c190f50" ], - "version": "==3.5.59" + "markers": "python_version >= '2.7' and python_version < '4'", + "version": "==3.5.66" }, "requests": { "hashes": [ @@ -1087,11 +1085,11 @@ }, "tqdm": { "hashes": [ - "sha256:2c44efa73b8914dba7807aefd09653ac63c22b5b4ea34f7a80973f418f1a3089", - "sha256:c23ac707e8e8aabb825e4d91f8e17247f9cc14b0d64dd9e97be0781e9e525bba" + "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", + "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" ], "index": "pypi", - "version": "==4.58.0" + "version": "==4.59.0" }, "twisted": { "extras": [ @@ -1121,11 +1119,11 @@ }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", + "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.3" + "version": "==1.26.4" }, "uvicorn": { "extras": [ @@ -1239,63 +1237,60 @@ }, "zope.interface": { "hashes": [ - "sha256:05a97ba92c1c7c26f25c9f671aa1ef85ffead6cdad13770e5b689cf983adc7e1", - "sha256:07d61722dd7d85547b7c6b0f5486b4338001fab349f2ac5cabc0b7182eb3425d", - "sha256:09fc3922f235703c0b76f8234867685eee68a24a49fffa2220975f6142db45f1", - "sha256:0a990dcc97806e5980bbb54b2e46b9cde9e48932d8e6984daf71ef1745516123", - "sha256:150e8bcb7253a34a4535aeea3de36c0bb3b1a6a47a183a95d65a194b3e07f232", - "sha256:1743bcfe45af8846b775086471c28258f4c6e9ee8ef37484de4495f15a98b549", - "sha256:1b5f6c8fff4ed32aa2dd43e84061bc8346f32d3ba6ad6e58f088fe109608f102", - "sha256:21e49123f375703cf824214939d39df0af62c47d122d955b2a8d9153ea08cfd5", - "sha256:21f579134a47083ffb5ddd1307f0405c91aa8b61ad4be6fd5af0171474fe0c45", - "sha256:27c267dc38a0f0079e96a2945ee65786d38ef111e413c702fbaaacbab6361d00", - "sha256:299bde0ab9e5c4a92f01a152b7fbabb460f31343f1416f9b7b983167ab1e33bc", - "sha256:2ab88d8f228f803fcb8cb7d222c579d13dab2d3622c51e8cf321280da01102a7", - "sha256:2ced4c35061eea623bc84c7711eedce8ecc3c2c51cd9c6afa6290df3bae9e104", - "sha256:2dcab01c660983ba5e5a612e0c935141ccbee67d2e2e14b833e01c2354bd8034", - "sha256:32546af61a9a9b141ca38d971aa6eb9800450fa6620ce6323cc30eec447861f3", - "sha256:32b40a4c46d199827d79c86bb8cb88b1bbb764f127876f2cb6f3a47f63dbada3", - "sha256:3cc94c69f6bd48ed86e8e24f358cb75095c8129827df1298518ab860115269a4", - "sha256:42b278ac0989d6f5cf58d7e0828ea6b5951464e3cf2ff229dd09a96cb6ba0c86", - "sha256:495b63fd0302f282ee6c1e6ea0f1c12cb3d1a49c8292d27287f01845ff252a96", - "sha256:4af87cdc0d4b14e600e6d3d09793dce3b7171348a094ba818e2a68ae7ee67546", - "sha256:4b94df9f2fdde7b9314321bab8448e6ad5a23b80542dcab53e329527d4099dcb", - "sha256:4c48ddb63e2b20fba4c6a2bf81b4d49e99b6d4587fb67a6cd33a2c1f003af3e3", - "sha256:4df9afd17bd5477e9f8c8b6bb8507e18dd0f8b4efe73bb99729ff203279e9e3b", - "sha256:518950fe6a5d56f94ba125107895f938a4f34f704c658986eae8255edb41163b", - "sha256:538298e4e113ccb8b41658d5a4b605bebe75e46a30ceca22a5a289cf02c80bec", - "sha256:55465121e72e208a7b69b53de791402affe6165083b2ea71b892728bd19ba9ae", - "sha256:588384d70a0f19b47409cfdb10e0c27c20e4293b74fc891df3d8eb47782b8b3e", - "sha256:6278c080d4afffc9016e14325f8734456831124e8c12caa754fd544435c08386", - "sha256:64ea6c221aeee4796860405e1aedec63424cda4202a7ad27a5066876db5b0fd2", - "sha256:681dbb33e2b40262b33fd383bae63c36d33fd79fa1a8e4092945430744ffd34a", - "sha256:6936aa9da390402d646a32a6a38d5409c2d2afb2950f045a7d02ab25a4e7d08d", - "sha256:778d0ec38bbd288b150a3ae363c8ffd88d2207a756842495e9bffd8a8afbc89a", - "sha256:8251f06a77985a2729a8bdbefbae79ee78567dddc3acbd499b87e705ca59fe24", - "sha256:83b4aa5344cce005a9cff5d0321b2e318e871cc1dfc793b66c32dd4f59e9770d", - "sha256:844fad925ac5c2ad4faaceb3b2520ad016b5280105c6e16e79838cf951903a7b", - "sha256:8ceb3667dd13b8133f2e4d637b5b00f240f066448e2aa89a41f4c2d78a26ce50", - "sha256:92dc0fb79675882d0b6138be4bf0cec7ea7c7eede60aaca78303d8e8dbdaa523", - "sha256:974f5957e66a7524ea81df7b2686a456bfaf0408dbb7353ddfbedb594eadfef6", - "sha256:9789bd945e9f5bd026ed3f5b453d640befb8b1fc33a779c1fe8d3eb21fe3fb4a", - "sha256:a2b6d6eb693bc2fc6c484f2e5d93bd0b0da803fa77bf974f160533e555e4d095", - "sha256:aab9f1e34d810feb00bf841993552b8fcc6ae71d473c505381627143d0018a6a", - "sha256:abb61afd84f23099ac6099d804cdba9bd3b902aaaded3ffff47e490b0a495520", - "sha256:adf9ee115ae8ff8b6da4b854b4152f253b390ba64407a22d75456fe07dcbda65", - "sha256:aedc6c672b351afe6dfe17ff83ee5e7eb6ed44718f879a9328a68bdb20b57e11", - "sha256:b7a00ecb1434f8183395fac5366a21ee73d14900082ca37cf74993cf46baa56c", - "sha256:ba32f4a91c1cb7314c429b03afbf87b1fff4fb1c8db32260e7310104bd77f0c7", - "sha256:cbd0f2cbd8689861209cd89141371d3a22a11613304d1f0736492590aa0ab332", - "sha256:e4bc372b953bf6cec65a8d48482ba574f6e051621d157cf224227dbb55486b1e", - "sha256:eccac3d9aadc68e994b6d228cb0c8919fc47a5350d85a1b4d3d81d1e98baf40c", - "sha256:efd550b3da28195746bb43bd1d815058181a7ca6d9d6aa89dd37f5eefe2cacb7", - "sha256:efef581c8ba4d990770875e1a2218e856849d32ada2680e53aebc5d154a17e20", - "sha256:f057897711a630a0b7a6a03f1acf379b6ba25d37dc5dc217a97191984ba7f2fc", - "sha256:f37d45fab14ffef9d33a0dc3bc59ce0c5313e2253323312d47739192da94f5fd", - "sha256:f44906f70205d456d503105023041f1e63aece7623b31c390a0103db4de17537" + "sha256:02d3535aa18e34ce97c58d241120b7554f7d1cf4f8002fc9675cc7e7745d20e8", + "sha256:0378a42ec284b65706d9ef867600a4a31701a0d6773434e6537cfc744e3343f4", + "sha256:07d289358a8c565ea09e426590dd1179f93cf5ac3dd17d43fcc4fc63c1a9d275", + "sha256:0e6cdbdd94ae94d1433ab51f46a76df0f2cd041747c31baec1c1ffa4e76bd0c1", + "sha256:11354fb8b8bdc5cdd66358ed4f1f0ce739d78ff6d215d33b8f3ae282258c0f11", + "sha256:12588a46ae0a99f172c4524cbbc3bb870f32e0f8405e9fa11a5ef3fa3a808ad7", + "sha256:16caa44a06f6b0b2f7626ced4b193c1ae5d09c1b49c9b4962c93ae8aa2134f55", + "sha256:18c478b89b6505756f007dcf76a67224a23dcf0f365427742ed0c0473099caa4", + "sha256:221b41442cf4428fcda7fc958c9721c916709e2a3a9f584edd70f1493a09a762", + "sha256:26109c50ccbcc10f651f76277cfc05fba8418a907daccc300c9247f24b3158a2", + "sha256:28d8157f8c77662a1e0796a7d3cfa8910289131d4b4dd4e10b2686ab1309b67b", + "sha256:2c51689b7b40c7d9c7e8a678350e73dc647945a13b4e416e7a02bbf0c37bdb01", + "sha256:2ec58e1e1691dde4fbbd97f8610de0f8f1b1a38593653f7d3b8e931b9cd6d67f", + "sha256:416feb6500f7b6fc00d32271f6b8495e67188cb5eb51fc8e289b81fdf465a9cb", + "sha256:520352b18adea5478bbf387e9c77910a914985671fe36bc5ef19fdcb67a854bc", + "sha256:527415b5ca201b4add44026f70278fbc0b942cf0801a26ca5527cb0389b6151e", + "sha256:54243053316b5eec92affe43bbace7c8cd946bc0974a4aa39ff1371df0677b22", + "sha256:61b8454190b9cc87279232b6de28dee0bad040df879064bb2f0e505cda907918", + "sha256:672668729edcba0f2ee522ab177fcad91c81cfce991c24d8767765e2637d3515", + "sha256:67aa26097e194947d29f2b5a123830e03da1519bcce10cac034a51fcdb99c34f", + "sha256:6e7305e42b5f54e5ccf51820de46f0a7c951ba7cb9e3f519e908545b0f5628d0", + "sha256:7234ac6782ca43617de803735949f79b894f0c5d353fbc001d745503c69e6d1d", + "sha256:7426bea25bdf92f00fa52c7b30fcd2a2f71c21cf007178971b1f248b6c2d3145", + "sha256:74b331c5d5efdddf5bbd9e1f7d8cb91a0d6b9c4ba45ca3e9003047a84dca1a3b", + "sha256:79b6db1a18253db86e9bf1e99fa829d60fd3fc7ac04f4451c44e4bdcf6756a42", + "sha256:7d79cd354ae0a033ac7b86a2889c9e8bb0bb48243a6ed27fc5064ce49b842ada", + "sha256:823d1b4a6a028b8327e64865e2c81a8959ae9f4e7c9c8e0eec814f4f9b36b362", + "sha256:8715717a5861932b7fe7f3cbd498c82ff4132763e2fea182cc95e53850394ec1", + "sha256:89a6091f2d07936c8a96ce56f2000ecbef20fb420a94845e7d53913c558a6378", + "sha256:8af4b3116e4a37059bc8c7fe36d4a73d7c1d8802a1d8b6e549f1380d13a40160", + "sha256:8b4b0034e6c7f30133fa64a1cc276f8f1a155ef9529e7eb93a3c1728b40c0f5c", + "sha256:92195df3913c1de80062635bf64cd7bd0d0934a7fa1689b6d287d1cbbd16922c", + "sha256:96c2e68385f3848d58f19b2975a675532abdb65c8fa5f04d94b95b27b6b1ffa7", + "sha256:9c7044dbbf8c58420a9ef4ed6901f5a8b7698d90cd984d7f57a18c78474686f6", + "sha256:a1937efed7e3fe0ee74630e1960df887d8aa83c571e1cf4db9d15b9c181d457d", + "sha256:a38c10423a475a1658e2cb8f52cf84ec20a4c0adff724dd43a6b45183f499bc1", + "sha256:a413c424199bcbab71bf5fa7538246f27177fbd6dd74b2d9c5f34878658807f8", + "sha256:b18a855f8504743e0a2d8b75d008c7720d44e4c76687e13f959e35d9a13eb397", + "sha256:b4d59ab3608538e550a72cea13d3c209dd72b6e19e832688da7884081c01594e", + "sha256:b51d3f1cd87f488455f43046d72003689024b0fa9b2d53635db7523033b19996", + "sha256:c02105deda867d09cdd5088d08708f06d75759df6f83d8f7007b06f422908a30", + "sha256:c7b6032dc4490b0dcaf078f09f5b382dc35493cb7f473840368bf0de3196c2b6", + "sha256:c95b355dba2aaf5177dff943b25ded0529a7feb80021d5fdb114a99f0a1ef508", + "sha256:c980ae87863d76b1ea9a073d6d95554b4135032d34bc541be50c07d4a085821b", + "sha256:d12895cd083e35e9e032eb4b57645b91116f8979527381a8d864d1f6b8cb4a2e", + "sha256:d3cd9bad547a8e5fbe712a1dc1413aff1b917e8d39a2cd1389a6f933b7a21460", + "sha256:e8809b01f27f679e3023b9e2013051e0a3f17abff4228cb5197663afd8a0f2c7", + "sha256:f3c37b0dc1898e305aad4f7a1d75f6da83036588c28a9ce0afc681ff5245a601", + "sha256:f966765f54b536e791541458de84a737a6adba8467190f17a8fe7f85354ba908", + "sha256:fa939c2e2468142c9773443d4038e7c915b0cc1b670d3c9192bdc503f7ea73e9", + "sha256:fcc5c1f95102989d2e116ffc8467963554ce89f30a65a3ea86a4d06849c498d8" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==5.2.0" + "version": "==5.3.0" } }, "develop": { @@ -1354,68 +1349,69 @@ }, "coverage": { "hashes": [ - "sha256:03ed2a641e412e42cc35c244508cf186015c217f0e4d496bf6d7078ebe837ae7", - "sha256:04b14e45d6a8e159c9767ae57ecb34563ad93440fc1b26516a89ceb5b33c1ad5", - "sha256:0cdde51bfcf6b6bd862ee9be324521ec619b20590787d1655d005c3fb175005f", - "sha256:0f48fc7dc82ee14aeaedb986e175a429d24129b7eada1b7e94a864e4f0644dde", - "sha256:107d327071061fd4f4a2587d14c389a27e4e5c93c7cba5f1f59987181903902f", - "sha256:1375bb8b88cb050a2d4e0da901001347a44302aeadb8ceb4b6e5aa373b8ea68f", - "sha256:14a9f1887591684fb59fdba8feef7123a0da2424b0652e1b58dd5b9a7bb1188c", - "sha256:16baa799ec09cc0dcb43a10680573269d407c159325972dd7114ee7649e56c66", - "sha256:1b811662ecf72eb2d08872731636aee6559cae21862c36f74703be727b45df90", - "sha256:1ccae21a076d3d5f471700f6d30eb486da1626c380b23c70ae32ab823e453337", - "sha256:2f2cf7a42d4b7654c9a67b9d091ec24374f7c58794858bff632a2039cb15984d", - "sha256:322549b880b2d746a7672bf6ff9ed3f895e9c9f108b714e7360292aa5c5d7cf4", - "sha256:32ab83016c24c5cf3db2943286b85b0a172dae08c58d0f53875235219b676409", - "sha256:3fe50f1cac369b02d34ad904dfe0771acc483f82a1b54c5e93632916ba847b37", - "sha256:4a780807e80479f281d47ee4af2eb2df3e4ccf4723484f77da0bb49d027e40a1", - "sha256:4a8eb7785bd23565b542b01fb39115a975fefb4a82f23d407503eee2c0106247", - "sha256:4b40b794775df10d7e3ea677108dd581bfec796235750c617d461874178a67f6", - "sha256:5bee3970617b3d74759b2d2df2f6a327d372f9732f9ccbf03fa591b5f7581e39", - "sha256:60a3307a84ec60578accd35d7f0c71a3a971430ed7eca6567399d2b50ef37b8c", - "sha256:6625e52b6f346a283c3d563d1fd8bae8956daafc64bb5bbd2b8f8a07608e3994", - "sha256:66a5aae8233d766a877c5ef293ec5ab9520929c2578fd2069308a98b7374ea8c", - "sha256:68fb816a5dd901c6aff352ce49e2a0ffadacdf9b6fae282a69e7a16a02dad5fb", - "sha256:6b588b5cf51dc0fd1c9e19f622457cc74b7d26fe295432e434525f1c0fae02bc", - "sha256:6c4d7165a4e8f41eca6b990c12ee7f44fef3932fac48ca32cecb3a1b2223c21f", - "sha256:6d2e262e5e8da6fa56e774fb8e2643417351427604c2b177f8e8c5f75fc928ca", - "sha256:6d9c88b787638a451f41f97446a1c9fd416e669b4d9717ae4615bd29de1ac135", - "sha256:755c56beeacac6a24c8e1074f89f34f4373abce8b662470d3aa719ae304931f3", - "sha256:7e40d3f8eb472c1509b12ac2a7e24158ec352fc8567b77ab02c0db053927e339", - "sha256:812eaf4939ef2284d29653bcfee9665f11f013724f07258928f849a2306ea9f9", - "sha256:84df004223fd0550d0ea7a37882e5c889f3c6d45535c639ce9802293b39cd5c9", - "sha256:859f0add98707b182b4867359e12bde806b82483fb12a9ae868a77880fc3b7af", - "sha256:87c4b38288f71acd2106f5d94f575bc2136ea2887fdb5dfe18003c881fa6b370", - "sha256:89fc12c6371bf963809abc46cced4a01ca4f99cba17be5e7d416ed7ef1245d19", - "sha256:9564ac7eb1652c3701ac691ca72934dd3009997c81266807aef924012df2f4b3", - "sha256:9754a5c265f991317de2bac0c70a746efc2b695cf4d49f5d2cddeac36544fb44", - "sha256:a565f48c4aae72d1d3d3f8e8fb7218f5609c964e9c6f68604608e5958b9c60c3", - "sha256:a636160680c6e526b84f85d304e2f0bb4e94f8284dd765a1911de9a40450b10a", - "sha256:a839e25f07e428a87d17d857d9935dd743130e77ff46524abb992b962eb2076c", - "sha256:ae9702c099546e72000d76758b5efec2dd937ba5d746ec8d0563d2fca0f9bc2e", - "sha256:b62046592b44263fa7570f1117d372ae3f310222af1fc1407416f037fb3af21b", - "sha256:b7f7421841f8db443855d2854e25914a79a1ff48ae92f70d0a5c2f8907ab98c9", - "sha256:ba7ca81b6d60a9f7a0b4b4e175dcc38e8fef4992673d9d6e6879fd6de00dd9b8", - "sha256:bb32ca14b4d04e172c541c69eec5f385f9a075b38fb22d765d8b0ce3af3a0c22", - "sha256:c0ff1c1b4d13e2240821ef23c1efb1f009207cb3f56e16986f713c2b0e7cd37f", - "sha256:c669b440ce46ae3abe9b2d44a913b5fd86bb19eb14a8701e88e3918902ecd345", - "sha256:c67734cff78383a1f23ceba3b3239c7deefc62ac2b05fa6a47bcd565771e5880", - "sha256:c6809ebcbf6c1049002b9ac09c127ae43929042ec1f1dbd8bb1615f7cd9f70a0", - "sha256:cd601187476c6bed26a0398353212684c427e10a903aeafa6da40c63309d438b", - "sha256:ebfa374067af240d079ef97b8064478f3bf71038b78b017eb6ec93ede1b6bcec", - "sha256:fbb17c0d0822684b7d6c09915677a32319f16ff1115df5ec05bdcaaee40b35f3", - "sha256:fff1f3a586246110f34dc762098b5afd2de88de507559e63553d7da643053786" + "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", + "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", + "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", + "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", + "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", + "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", + "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", + "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", + "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", + "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", + "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", + "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", + "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", + "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", + "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", + "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", + "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", + "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", + "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", + "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", + "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", + "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", + "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", + "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", + "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", + "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", + "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", + "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", + "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", + "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", + "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", + "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", + "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", + "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", + "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", + "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", + "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", + "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", + "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", + "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", + "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", + "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", + "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", + "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", + "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", + "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", + "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", + "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", + "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", + "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", + "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", + "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==5.4" + "version": "==5.5" }, "coveralls": { "hashes": [ - "sha256:5399c0565ab822a70a477f7031f6c88a9dd196b3de2877b3facb43b51bd13434", - "sha256:f8384968c57dee4b7133ae701ecdad88e85e30597d496dcba0d7fbb470dca41f" + "sha256:7bd173b3425733661ba3063c88f180127cc2b20e9740686f86d2622b31b41385", + "sha256:cbb942ae5ef3d2b55388cb5b43e93a269544911535f1e750e1c656aef019ce60" ], "index": "pypi", - "version": "==3.0.0" + "version": "==3.0.1" }, "distlib": { "hashes": [ @@ -1457,11 +1453,11 @@ }, "faker": { "hashes": [ - "sha256:90b69e9e05d622edb2fa5ebfda7bef41c88675cace85e72689fde5b8723d00a3", - "sha256:da395fe545f40d4366b82b1a02448847a4586bd2b28af393b3edbd1e45d1e0fc" + "sha256:60a7263104ef7a14ecfe2af1142d53924aa534ccec85cea82bb67b2b32f84421", + "sha256:f43ac743c34affb1c7fccca8b06450371cd482b6ddcb4110e420acb24356e70b" ], "markers": "python_version >= '3.6'", - "version": "==6.5.0" + "version": "==6.6.2" }, "filelock": { "hashes": [ @@ -1591,19 +1587,19 @@ }, "pycodestyle": { "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068", + "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef" ], "index": "pypi", - "version": "==2.6.0" + "version": "==2.7.0" }, "pygments": { "hashes": [ - "sha256:37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0", - "sha256:b21b072d0ccdf29297a82a2363359d99623597b8a265b8081760e4d0f7153c88" + "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", + "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" ], "markers": "python_version >= '3.5'", - "version": "==2.8.0" + "version": "==2.8.1" }, "pyparsing": { "hashes": [ @@ -1796,27 +1792,27 @@ }, "tox": { "hashes": [ - "sha256:89afa9c59c04beb55eda789c7a65feb1a70fde117f85f1bd1c27c66758456e60", - "sha256:ed1e650cf6368bcbc4a071eeeba363c480920e0ed8a9ad1793c7caaa5ad33d49" + "sha256:05a4dbd5e4d3d8269b72b55600f0b0303e2eb47ad5c6fe76d3576f4c58d93661", + "sha256:e007673f3595cede9b17a7c4962389e4305d4a3682a6c5a4159a1453b4f326aa" ], "index": "pypi", - "version": "==3.22.0" + "version": "==3.23.0" }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", + "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.3" + "version": "==1.26.4" }, "virtualenv": { "hashes": [ - "sha256:147b43894e51dd6bba882cf9c282447f780e2251cd35172403745fc381a0a80d", - "sha256:2be72df684b74df0ea47679a7df93fd0e04e72520022c57b479d8f881485dbe3" + "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107", + "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.4.2" + "version": "==20.4.3" } } } diff --git a/requirements.txt b/requirements.txt index 947a30350..33d44f136 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,11 +8,11 @@ -i https://pypi.python.org/simple --extra-index-url https://www.piwheels.org/simple aioredis==1.3.1 -arrow==1.0.1; python_version >= '3.6' +arrow==1.0.3; python_version >= '3.6' asgiref==3.3.1; python_version >= '3.5' async-timeout==3.0.1; python_full_version >= '3.5.3' attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -autobahn==21.2.2; python_version >= '3.7' +autobahn==21.3.1; python_version >= '3.7' automat==20.2.0 blessed==1.18.0 certifi==2020.12.5 @@ -43,9 +43,9 @@ httptools==0.1.1 humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' hyperlink==21.0.0 idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -imap-tools==0.38.1 +imap-tools==0.39.0 img2pdf==0.4.0 -incremental==17.5.0 +incremental==21.3.0 inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' inotifyrecursive==0.3.5 joblib==1.0.1; python_version >= '3.6' @@ -53,11 +53,11 @@ langdetect==1.0.8 lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' msgpack==1.0.2 numpy==1.19.5 -ocrmypdf==11.7.0 +ocrmypdf==11.7.2 pathvalidate==2.3.2 pdfminer.six==20201018 -pikepdf==2.5.2 -pillow==8.1.0 +pikepdf==2.9.1 +pillow==8.1.2 pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' portalocker==2.2.1; python_version >= '3' psycopg2-binary==2.8.6 @@ -67,14 +67,14 @@ pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' python-dateutil==2.8.1 python-dotenv==0.15.0 -python-gnupg==0.4.6 +python-gnupg==0.4.7 python-levenshtein==0.12.2 python-magic==0.4.22 pytz==2021.1 pyyaml==5.4.1 redis==3.5.3 -regex==2020.11.13 -reportlab==3.5.59 +regex==2021.3.17 +reportlab==3.5.66; python_version >= '2.7' and python_version < '4' requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' scikit-learn==0.24.0 scipy==1.5.4 @@ -84,11 +84,11 @@ sortedcontainers==2.3.0 sqlparse==0.4.1; python_version >= '3.5' threadpoolctl==2.1.0; python_version >= '3.5' tika==1.24 -tqdm==4.58.0 +tqdm==4.59.0 twisted[tls]==21.2.0; python_full_version >= '3.5.4' txaio==21.2.1; python_version >= '3.6' tzlocal==2.1 -urllib3==1.26.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +urllib3==1.26.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' uvicorn[standard]==0.13.4 uvloop==0.14.0 watchdog==1.0.2 @@ -97,4 +97,4 @@ wcwidth==0.2.5 websockets==8.1 whitenoise==5.2.0 whoosh==2.7.4 -zope.interface==5.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +zope.interface==5.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' From 27cb243a2f808e65d676b2849998b93dbf99f75e Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:50:48 +0100 Subject: [PATCH 30/93] fix dependencies --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9e7a34aa4..e41aeb7ac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ RUN echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.lis # Mime type detection file \ libmagic-dev \ - mime-support \ + media-types \ # OCRmyPDF dependencies ghostscript \ icc-profiles-free \ From d26c46e034d75ce5f04e16de3b171aa542bda5ab Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 22 Mar 2021 22:46:35 +0100 Subject: [PATCH 31/93] fixes #794 --- src/paperless_tesseract/parsers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 589b25e37..944bda601 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -119,6 +119,8 @@ class RasterisedDocumentParser(DocumentParser): try: text = extract_text(pdf_file) stripped = strip_excess_whitespace(text) + stripped = stripped.replace("\0", " ") + self.log("debug", f"Extracted text from PDF file {pdf_file}") return stripped except PDFException: From fda2bfbea7ce44a66fe2ee45381ce8b59accde9d Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:00:15 +0100 Subject: [PATCH 32/93] better exception logging --- src/documents/consumer.py | 16 ++++++++++------ src/paperless_tesseract/parsers.py | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/documents/consumer.py b/src/documents/consumer.py index 3fd62fabc..3d7d98198 100755 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -64,9 +64,9 @@ class Consumer(LoggingMixin): {'type': 'status_update', 'data': payload}) - def _fail(self, message, log_message=None): + def _fail(self, message, log_message=None, exc_info=None): self._send_progress(100, 100, 'FAILED', message) - self.log("error", log_message or message) + self.log("error", log_message or message, exc_info=exc_info) raise ConsumerError(f"{self.filename}: {log_message or message}") def __init__(self): @@ -120,7 +120,8 @@ class Consumer(LoggingMixin): except Exception as e: self._fail( MESSAGE_PRE_CONSUME_SCRIPT_ERROR, - f"Error while executing pre-consume script: {e}" + f"Error while executing pre-consume script: {e}", + exc_info=True ) def run_post_consume_script(self, document): @@ -150,7 +151,8 @@ class Consumer(LoggingMixin): except Exception as e: self._fail( MESSAGE_POST_CONSUME_SCRIPT_ERROR, - f"Error while executing post-consume script: {e}" + f"Error while executing post-consume script: {e}", + exc_info=True ) def try_consume_file(self, @@ -255,7 +257,8 @@ class Consumer(LoggingMixin): document_parser.cleanup() self._fail( str(e), - f"Error while consuming document {self.filename}: {e}" + f"Error while consuming document {self.filename}: {e}", + exc_info=True ) # Prepare the document classifier. @@ -326,7 +329,8 @@ class Consumer(LoggingMixin): self._fail( str(e), f"The following error occured while consuming " - f"{self.filename}: {e}" + f"{self.filename}: {e}", + exc_info=True ) finally: document_parser.cleanup() diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 944bda601..d381ed94f 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -246,9 +246,9 @@ class RasterisedDocumentParser(DocumentParser): if original_has_text: self.text = text_original except (NoTextFoundException, InputFileError) as e: - self.log("exception", - f"Encountered the following error while running OCR, " - f"attempting force OCR to get the text.") + self.log("warning", + f"Encountered an error while running OCR: {str(e)}. " + f"Attempting force OCR to get the text.") archive_path_fallback = os.path.join( self.tempdir, "archive-fallback.pdf") From 21fafd3255fe170e9682ebec39191b1383a4f999 Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:03:01 +0100 Subject: [PATCH 33/93] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 45c71ab67..238955342 100644 --- a/README.md +++ b/README.md @@ -78,9 +78,7 @@ The documentation for Paperless-ng is available on [ReadTheDocs](https://paperle # Translation -Paperless is currently available in English, German, Dutch, French, Portuguese, Italian, and Romanian. - -There's an active translation project at crowdin! If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details. +Paperless is available in many different languages. Translation is coordinated at crowdin. If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details! # Feature Requests From 0e596bd1fc8bd69f5e63430874fd725bebdf5828 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:08:34 +0100 Subject: [PATCH 34/93] also apply \0 removal to sidecar contents --- src/paperless_tesseract/parsers.py | 14 +++++++------- src/paperless_tesseract/tests/test_parser.py | 8 +++----- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index d381ed94f..be8f45e7b 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -104,7 +104,7 @@ class RasterisedDocumentParser(DocumentParser): # This happens when there's already text in the input file. # The sidecar file will only contain text for OCR'ed pages. self.log("debug", "Using text from sidecar file") - return text + return post_process_text(text) else: self.log("debug", "Incomplete sidecar file: discarding.") @@ -113,13 +113,11 @@ class RasterisedDocumentParser(DocumentParser): if not os.path.isfile(pdf_file): return None - from pdfminer.high_level import extract_text + from pdfminer.high_level import extract_text as pdfminer_extract_text from pdfminer.pdftypes import PDFException try: - text = extract_text(pdf_file) - stripped = strip_excess_whitespace(text) - stripped = stripped.replace("\0", " ") + stripped = post_process_text(pdfminer_extract_text(pdf_file)) self.log("debug", f"Extracted text from PDF file {pdf_file}") return stripped @@ -296,7 +294,7 @@ class RasterisedDocumentParser(DocumentParser): self.text = "" -def strip_excess_whitespace(text): +def post_process_text(text): if not text: return None @@ -307,4 +305,6 @@ def strip_excess_whitespace(text): r"([^\S\n\r]+)$", '', no_leading_whitespace) # TODO: this needs a rework - return no_trailing_whitespace.strip() + # replace \0 prevents issues with saving to postgres. + # text may contain \0 when this character is present in PDF files. + return no_trailing_whitespace.strip().replace("\0", " ") diff --git a/src/paperless_tesseract/tests/test_parser.py b/src/paperless_tesseract/tests/test_parser.py index fe4e4733b..e39f87017 100644 --- a/src/paperless_tesseract/tests/test_parser.py +++ b/src/paperless_tesseract/tests/test_parser.py @@ -7,7 +7,7 @@ from django.test import TestCase, override_settings from documents.parsers import ParseError, run_convert from documents.tests.utils import DirectoriesMixin -from paperless_tesseract.parsers import RasterisedDocumentParser, strip_excess_whitespace +from paperless_tesseract.parsers import RasterisedDocumentParser, post_process_text image_to_string_calls = [] @@ -32,8 +32,6 @@ class FakeImageFile(ContextManager): return os.path.basename(self.fname) - - class TestParser(DirectoriesMixin, TestCase): def assertContainsStrings(self, content, strings): @@ -58,9 +56,9 @@ class TestParser(DirectoriesMixin, TestCase): ) ] - def test_strip_excess_whitespace(self): + def test_post_process_text(self): for source, result in self.text_cases: - actual_result = strip_excess_whitespace(source) + actual_result = post_process_text(source) self.assertEqual( result, actual_result, From ccaee4ce6205227a5c9b042bc6d9b2f35feba063 Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Mar 2021 10:31:05 +0100 Subject: [PATCH 35/93] Update README.md --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 238955342..5cac22e55 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,12 @@ Paperless-ng is a fork of the original project, adding a new interface and many other changes under the hood. These key points should help you decide whether Paperless-ng is something you would prefer over Paperless: -* Interface: The new front end is the main interface for paperless-ng, the old interface still exists but most customizations (such as thumbnails for the document list) have been removed. +* Interface: The new front end is the main interface for Paperless-ng, the old interface still exists but most customizations (such as thumbnails for the document list) have been removed.0 * Encryption: Paperless-ng does not support GnuPG anymore, since storing your data on encrypted file systems (that you optionally mount on demand) achieves about the same result. -* Resource usage: Paperless-ng does use a bit more resources than Paperless. Running the web server requires about 300MB of RAM or more, depending on the configuration. While adding documents, it requires about 300MB additional RAM, depending on the document. It still runs on Pi (many users do that), but it has been generally geared to better use the resources of more powerful systems. +* Resource usage: Paperless-ng does use a bit more resources than Paperless. Running the web server requires about 300MB of RAM or more, depending on the configuration. While adding documents, it requires about 300MB additional RAM, depending on the document. It still runs on Raspberry Pi (many users do that), but it has been generally geared to better use the resources of more powerful systems. * API changes: If you rely on the REST API of paperless, some of its functionality has been changed. -For a detailed list of changes, have a look at the [change log](https://paperless-ng.readthedocs.io/en/latest/changelog.html) in the documentation. +For a detailed list of changes, have a look at the [change log](https://paperless-ng.readthedocs.io/en/latest/changelog.html) in the documentation, especially the section about the [0.9.0 release](https://paperless-ng.readthedocs.io/en/latest/changelog.html#paperless-ng-0-9-0). # How it Works @@ -25,7 +25,7 @@ Paperless does not control your scanner, it only helps you deal with what your s 1. Buy a document scanner that can write to a place on your network. If you need some inspiration, have a look at the [scanner recommendations](https://paperless-ng.readthedocs.io/en/latest/scanners.html) page. Set it up to "scan to FTP" or something similar. It should be able to push scanned images to a server without you having to do anything. Of course if your scanner doesn't know how to automatically upload the file somewhere, you can always do that manually. Paperless doesn't care how the documents get into its local consumption directory. - - Alternatively, you can use any of the mobile scanning apps out there. We have an app that allows you to share documents with paperless, if you're on Android. See the section on affiliated projects. + - Alternatively, you can use any of the mobile scanning apps out there. We have an app that allows you to share documents with paperless, if you're on Android. See the section on affiliated projects below. 2. Wait for paperless to process your files. OCR is expensive, and depending on the power of your machine, this might take a bit of time. 3. Use the web frontend to sift through the database and find what you want. @@ -35,6 +35,8 @@ Here's what you get: ![Dashboard](https://github.com/jonaswinkler/paperless-ng/raw/master/docs/_static/screenshots/dashboard.png) +If you want to see paperless-ng in action, [more screenshots are available in the documentation](https://paperless-ng.readthedocs.io/en/latest/screenshots.html). + # Features * Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents. @@ -58,19 +60,17 @@ Here's what you get: * Optimized for multi core systems: Paperless-ng consumes multiple documents in parallel. * The integrated sanity checker makes sure that your document archive is in good health. -If you want to see some screenshots of paperless-ng in action, [some are available in the documentation](https://paperless-ng.readthedocs.io/en/latest/screenshots.html). - # Getting started The recommended way to deploy paperless is docker-compose. The files in the /docker/hub directory are configured to pull the image from Docker Hub. Read the [documentation](https://paperless-ng.readthedocs.io/en/latest/setup.html#installation) on how to get started. -Alternatively, you can install the dependencies and setup apache and a database server yourself. The documenation has a step by step guide on how to do it. +Alternatively, you can install the dependencies and setup apache and a database server yourself. The documenation has a step by step guide on how to do it. Consider giving the Ansible role a shot, this essentially automates the entire bare metal installation process. -# Migrating to paperless-ng +# Migrating from Paperless to Paperless-ng -Read the section about [migration](https://paperless-ng.readthedocs.io/en/latest/setup.html#migration-to-paperless-ng) in the documentation. Its also entirely possible to go back to paperless by reverting the database migrations. +Read the section about [migration](https://paperless-ng.readthedocs.io/en/latest/setup.html#migration-to-paperless-ng) in the documentation. Its also entirely possible to go back to Paperless by reverting the database migrations. # Documentation @@ -92,7 +92,7 @@ For bugs please [open an issue](https://github.com/jonaswinkler/paperless-ng/iss There's still lots of things to be done, just have a look at open issues & discussions. If you feel like contributing to the project, please do! Bug fixes and improvements to the front end (I just can't seem to get some of these CSS things right) are always welcome. The documentation has some basic information on how to get started. -If you want to implement something big: Please start a discussion about that in the issues! Maybe I've already had something similar in mind and we can make it happen together. However, keep in mind that the general roadmap is to make the existing features stable and get them tested. See the roadmap above. +If you want to implement something big: Please start a discussion about that! Maybe I've already had something similar in mind and we can make it happen together. However, keep in mind that the general roadmap is to make the existing features stable and get them tested. # Affiliated Projects From cd72ed2cec8220dc63981d0f48961d92b1ec46a7 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:13:37 -0700 Subject: [PATCH 36/93] Support passing current term from tag search to create dialog --- .../common/input/tags/tags.component.html | 7 ++++--- .../components/common/input/tags/tags.component.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/components/common/input/tags/tags.component.html b/src-ui/src/app/components/common/input/tags/tags.component.html index 677b9f4d1..5500930bb 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.html +++ b/src-ui/src/app/components/common/input/tags/tags.component.html @@ -8,7 +8,8 @@ [clearSearchOnAdd]="true" [hideSelected]="true" (change)="onChange(value)" - (blur)="onTouched()"> + (search)="onSearch($event)" + (focus)="onFocus()"> @@ -39,8 +40,8 @@ {{tag.name}}  - - + +
diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index f77d0570d..336341bc3 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -56,6 +56,8 @@ export class TagsComponent implements OnInit, ControlValueAccessor { tags: PaperlessTag[] + private _lastSearchTerm: string + getTag(id) { if (this.tags) { return this.tags.find(tag => tag.id == id) @@ -77,6 +79,7 @@ export class TagsComponent implements OnInit, ControlValueAccessor { createTag() { var modal = this.modalService.open(TagEditDialogComponent, {backdrop: 'static'}) modal.componentInstance.dialogMode = 'create' + if (this._lastSearchTerm) modal.componentInstance.object = { name: this._lastSearchTerm } modal.componentInstance.success.subscribe(newTag => { this.tagService.listAll().subscribe(tags => { this.tags = tags.results @@ -84,6 +87,9 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) }) }) + modal.result.then(() => { + this._lastSearchTerm = null + }) } getSuggestions() { @@ -99,4 +105,12 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) } + onFocus() { + this._lastSearchTerm = null + } + + onSearch($event) { + this._lastSearchTerm = $event.term + } + } From 52bc1a62e1525204a6803e538ba7a850c7855a62 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:21:13 -0700 Subject: [PATCH 37/93] Support passing current term from input-select search to create dialog e.g. for doc type / correspondent --- .../common/input/select/select.component.html | 9 +++++---- .../common/input/select/select.component.ts | 17 ++++++++++++++++- .../document-detail.component.html | 4 ++-- .../document-detail.component.ts | 6 ++++-- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src-ui/src/app/components/common/input/select/select.component.html b/src-ui/src/app/components/common/input/select/select.component.html index 540429e89..59d0f9ca3 100644 --- a/src-ui/src/app/components/common/input/select/select.component.html +++ b/src-ui/src/app/components/common/input/select/select.component.html @@ -10,11 +10,12 @@ bindLabel="name" bindValue="id" (change)="onChange(value)" - (blur)="onTouched()"> + (search)="onSearch($event)" + (focus)="onFocus()">
-
diff --git a/src-ui/src/app/components/common/input/select/select.component.ts b/src-ui/src/app/components/common/input/select/select.component.ts index e02aaab72..6eaf7795f 100644 --- a/src-ui/src/app/components/common/input/select/select.component.ts +++ b/src-ui/src/app/components/common/input/select/select.component.ts @@ -34,7 +34,9 @@ export class SelectComponent extends AbstractInputComponent { suggestions: number[] @Output() - createNew = new EventEmitter() + createNew = new EventEmitter() + + private _lastSearchTerm: string showPlusButton(): boolean { return this.createNew.observers.length > 0 @@ -48,4 +50,17 @@ export class SelectComponent extends AbstractInputComponent { } } + clickNew() { + this.createNew.next(this._lastSearchTerm) + this._lastSearchTerm = null + } + + onFocus() { + this._lastSearchTerm = null + } + + onSearch($event) { + this._lastSearchTerm = $event.term + } + } diff --git a/src-ui/src/app/components/document-detail/document-detail.component.html b/src-ui/src/app/components/document-detail/document-detail.component.html index f9b87aee3..1286225fb 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.html +++ b/src-ui/src/app/components/document-detail/document-detail.component.html @@ -60,9 +60,9 @@ + (createNew)="createCorrespondent($event)" [suggestions]="suggestions?.correspondents"> + (createNew)="createDocumentType($event)" [suggestions]="suggestions?.document_types"> diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index af98a6f7f..7dd5dd80d 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -127,9 +127,10 @@ export class DocumentDetailComponent implements OnInit { this.documentForm.patchValue(doc) } - createDocumentType() { + createDocumentType(newName: string) { var modal = this.modalService.open(DocumentTypeEditDialogComponent, {backdrop: 'static'}) modal.componentInstance.dialogMode = 'create' + if (newName) modal.componentInstance.object = { name: newName } modal.componentInstance.success.subscribe(newDocumentType => { this.documentTypeService.listAll().subscribe(documentTypes => { this.documentTypes = documentTypes.results @@ -138,9 +139,10 @@ export class DocumentDetailComponent implements OnInit { }) } - createCorrespondent() { + createCorrespondent(newName: string) { var modal = this.modalService.open(CorrespondentEditDialogComponent, {backdrop: 'static'}) modal.componentInstance.dialogMode = 'create' + if (newName) modal.componentInstance.object = { name: newName } modal.componentInstance.success.subscribe(newCorrespondent => { this.correspondentService.listAll().subscribe(correspondents => { this.correspondents = correspondents.results From 8ddb3e80b7674cf7906a21e7ed3cee1fc385ff2a Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:21:51 -0700 Subject: [PATCH 38/93] Add timeout for clearing last search term on select blur --- .../components/common/input/select/select.component.html | 3 ++- .../app/components/common/input/select/select.component.ts | 6 ++++++ .../app/components/common/input/tags/tags.component.html | 3 ++- .../src/app/components/common/input/tags/tags.component.ts | 6 ++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/common/input/select/select.component.html b/src-ui/src/app/components/common/input/select/select.component.html index 59d0f9ca3..a2834a1c9 100644 --- a/src-ui/src/app/components/common/input/select/select.component.html +++ b/src-ui/src/app/components/common/input/select/select.component.html @@ -11,7 +11,8 @@ bindValue="id" (change)="onChange(value)" (search)="onSearch($event)" - (focus)="onFocus()"> + (focus)="onFocus()" + (blur)="onBlur()">
diff --git a/src-ui/src/app/components/common/input/select/select.component.ts b/src-ui/src/app/components/common/input/select/select.component.ts index 6eaf7795f..438925d32 100644 --- a/src-ui/src/app/components/common/input/select/select.component.ts +++ b/src-ui/src/app/components/common/input/select/select.component.ts @@ -63,4 +63,10 @@ export class SelectComponent extends AbstractInputComponent { this._lastSearchTerm = $event.term } + onBlur() { + setTimeout(() => { + this._lastSearchTerm = null + }, 3000); + } + } diff --git a/src-ui/src/app/components/common/input/tags/tags.component.html b/src-ui/src/app/components/common/input/tags/tags.component.html index 5500930bb..df6621fb0 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.html +++ b/src-ui/src/app/components/common/input/tags/tags.component.html @@ -9,7 +9,8 @@ [hideSelected]="true" (change)="onChange(value)" (search)="onSearch($event)" - (focus)="onFocus()"> + (focus)="onFocus()" + (blur)="onBlur()"> diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index 336341bc3..a1a803b61 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -113,4 +113,10 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this._lastSearchTerm = $event.term } + onBlur() { + setTimeout(() => { + this._lastSearchTerm = null + }, 3000); + } + } From b6756595d98a10fbefdb67ffe0a2ccd3ee61cb8a Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:37:26 -0700 Subject: [PATCH 39/93] Clear last search term when clear button clicked --- .../components/common/input/select/select.component.html | 3 ++- .../app/components/common/input/select/select.component.ts | 6 +++--- .../app/components/common/input/tags/tags.component.html | 3 ++- .../src/app/components/common/input/tags/tags.component.ts | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src-ui/src/app/components/common/input/select/select.component.html b/src-ui/src/app/components/common/input/select/select.component.html index a2834a1c9..f9f05b6fa 100644 --- a/src-ui/src/app/components/common/input/select/select.component.html +++ b/src-ui/src/app/components/common/input/select/select.component.html @@ -11,7 +11,8 @@ bindValue="id" (change)="onChange(value)" (search)="onSearch($event)" - (focus)="onFocus()" + (focus)="clearLastSearchTerm()" + (clear)="clearLastSearchTerm()" (blur)="onBlur()"> diff --git a/src-ui/src/app/components/common/input/select/select.component.ts b/src-ui/src/app/components/common/input/select/select.component.ts index 438925d32..408b3a73a 100644 --- a/src-ui/src/app/components/common/input/select/select.component.ts +++ b/src-ui/src/app/components/common/input/select/select.component.ts @@ -52,10 +52,10 @@ export class SelectComponent extends AbstractInputComponent { clickNew() { this.createNew.next(this._lastSearchTerm) - this._lastSearchTerm = null + this.clearLastSearchTerm() } - onFocus() { + clearLastSearchTerm() { this._lastSearchTerm = null } @@ -65,7 +65,7 @@ export class SelectComponent extends AbstractInputComponent { onBlur() { setTimeout(() => { - this._lastSearchTerm = null + this.clearLastSearchTerm() }, 3000); } diff --git a/src-ui/src/app/components/common/input/tags/tags.component.html b/src-ui/src/app/components/common/input/tags/tags.component.html index df6621fb0..6eda2a44d 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.html +++ b/src-ui/src/app/components/common/input/tags/tags.component.html @@ -9,7 +9,8 @@ [hideSelected]="true" (change)="onChange(value)" (search)="onSearch($event)" - (focus)="onFocus()" + (focus)="clearLastSearchTerm()" + (clear)="clearLastSearchTerm()" (blur)="onBlur()"> diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index a1a803b61..5c413a7c6 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -105,7 +105,7 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) } - onFocus() { + clearLastSearchTerm() { this._lastSearchTerm = null } @@ -115,7 +115,7 @@ export class TagsComponent implements OnInit, ControlValueAccessor { onBlur() { setTimeout(() => { - this._lastSearchTerm = null + this.clearLastSearchTerm() }, 3000); } From 9514e79bfbfd2852e550e2614897d76b331e9b21 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:42:14 -0700 Subject: [PATCH 40/93] Not needed, clearing will be done by timeout --- src-ui/src/app/components/common/input/tags/tags.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index 5c413a7c6..44b2e282e 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -87,9 +87,6 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) }) }) - modal.result.then(() => { - this._lastSearchTerm = null - }) } getSuggestions() { From fe84430679fc2d596f078c0ec0bd29e5ca337b43 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 16:17:40 -0700 Subject: [PATCH 41/93] Remove all rem units on SVG elements See https://bugzilla.mozilla.org/show_bug.cgi?id=1231147 --- src-ui/src/app/components/app-frame/app-frame.component.html | 4 ++-- src-ui/src/app/components/dashboard/dashboard.component.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src-ui/src/app/components/app-frame/app-frame.component.html b/src-ui/src/app/components/app-frame/app-frame.component.html index 96ca1382c..2ff58b104 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.html +++ b/src-ui/src/app/components/app-frame/app-frame.component.html @@ -5,7 +5,7 @@ - + Paperless-ng @@ -175,7 +175,7 @@  GitHub - + Suggest an idea diff --git a/src-ui/src/app/components/dashboard/dashboard.component.html b/src-ui/src/app/components/dashboard/dashboard.component.html index ec2bbd85c..6b9ea950b 100644 --- a/src-ui/src/app/components/dashboard/dashboard.component.html +++ b/src-ui/src/app/components/dashboard/dashboard.component.html @@ -1,5 +1,5 @@ -
From 0463c3fe544ae0d27b83ed9813fbdc4731b8cbe7 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 24 Mar 2021 16:21:08 -0700 Subject: [PATCH 42/93] 1.3em not 1.5em --- src-ui/src/app/components/app-frame/app-frame.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/app-frame/app-frame.component.html b/src-ui/src/app/components/app-frame/app-frame.component.html index 2ff58b104..25d4a9dc7 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.html +++ b/src-ui/src/app/components/app-frame/app-frame.component.html @@ -175,7 +175,7 @@  GitHub - + Suggest an idea From 5319d4782a519e38d72ac5bb90e30c391d22f5bf Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 26 Mar 2021 23:12:36 +0100 Subject: [PATCH 43/93] New translations django.po (Italian) (#813) --- src/locale/it_IT/LC_MESSAGES/django.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index 48dfe762e..a36ee9d9b 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-18 00:34\n" +"PO-Revision-Date: 2021-03-23 11:21\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -366,7 +366,7 @@ msgstr "Il tipo di file %(type)s non è supportato" #: documents/templates/index.html:21 msgid "Paperless-ng is loading..." -msgstr "Paperless-ng si sta caricando..." +msgstr "Paperless-ng è in caricamento..." #: documents/templates/registration/logged_out.html:13 msgid "Paperless-ng signed out" From 7eb4253c001fecbf299906ad311e699091ac14f3 Mon Sep 17 00:00:00 2001 From: benjaminfrank Date: Sat, 27 Mar 2021 14:40:13 +0100 Subject: [PATCH 44/93] Update scanners.rst --- docs/scanners.rst | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/scanners.rst b/docs/scanners.rst index 04856bbfc..752063bb4 100644 --- a/docs/scanners.rst +++ b/docs/scanners.rst @@ -65,22 +65,26 @@ Mobile phone software You can use your phone to "scan" documents. The regular camera app will work, but may have too low contrast for OCR to work well. Apps specifically for scanning are recommended. -+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ -| Name | OS | Supports | Recommended By | -+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ -| | | FTP | NFS | SMB | Email | WebDav | | -+===================+================+=====+=====+=====+=======+========+================+ -| `Office Lens`_ | Android | ? | ? | ? | ? | ? | `jonaswinkler`_| -+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ -| `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ | -+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ -| `Quick Scan`_ | iOS | no | no | no | no | no | `holzhannes`_ | -+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ +| Name | OS | Supports | Recommended By | ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ +| | | FTP | NFS | SMB | Email | WebDav | | ++===================+================+=====+=====+=====+=======+========+==================+ +| `Office Lens`_ | Android | ? | ? | ? | ? | ? | `jonaswinkler`_ | ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ +| `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ | ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ +| `OpenScan`_ | Android | no | no | no | no | no | `benjaminfrank`_ | ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ +| `Quick Scan`_ | iOS | no | no | no | no | no | `holzhannes`_ | ++-------------------+----------------+-----+-----+-----+-------+--------+------------------+ On Android, you can use these applications in combination with one of the :ref:`Paperless-ng compatible apps ` to "Share" the documents produced by these scanner apps with paperless. On iOS, you can share the scanned documents via iOS-Sharing to other mail, WebDav or FTP apps. .. _Office Lens: https://play.google.com/store/apps/details?id=com.microsoft.office.officelens .. _Genius Scan: https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free .. _Quick Scan: https://apps.apple.com/us/app/quickscan-scanner-text-ocr/id1513790291 +.. _OpenScan: https://github.com/Ethereal-Developers-Inc/OpenScan .. _hannahswain: https://github.com/hannahswain +.. _benjaminfrank: https://github.com/benjaminfrank From 13a839de573ab153eb9b2f1d40aef5ab5c010d1a Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 30 Mar 2021 00:42:06 +0200 Subject: [PATCH 45/93] New Crowdin updates (#837) --- src-ui/src/locale/messages.ro_RO.xlf | 2 +- src/locale/ro_RO/LC_MESSAGES/django.po | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-ui/src/locale/messages.ro_RO.xlf b/src-ui/src/locale/messages.ro_RO.xlf index c434c30bf..4f45f3625 100644 --- a/src-ui/src/locale/messages.ro_RO.xlf +++ b/src-ui/src/locale/messages.ro_RO.xlf @@ -1967,7 +1967,7 @@ src/app/services/settings.service.ts 100 - Spanish + Spaniolă ISO 8601 diff --git a/src/locale/ro_RO/LC_MESSAGES/django.po b/src/locale/ro_RO/LC_MESSAGES/django.po index 70194eff5..dcb505aba 100644 --- a/src/locale/ro_RO/LC_MESSAGES/django.po +++ b/src/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 22:42\n" +"PO-Revision-Date: 2021-03-28 09:07\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -446,7 +446,7 @@ msgstr "Rusă" #: paperless/settings.py:308 msgid "Spanish" -msgstr "" +msgstr "Spaniolă" #: paperless/urls.py:118 msgid "Paperless-ng administration" From f62e64357bef1c4a074f0975243d9cc6dda99165 Mon Sep 17 00:00:00 2001 From: Tobi Date: Tue, 30 Mar 2021 19:07:29 +0200 Subject: [PATCH 46/93] implements #807 --- src-ui/src/app/app-routing.module.ts | 6 ++- src-ui/src/app/app.module.ts | 4 +- .../document-asncomponent.component.html | 1 + .../document-asncomponent.component.scss | 0 .../document-asncomponent.component.spec.ts | 25 ++++++++++++ .../document-asncomponent.component.ts | 38 +++++++++++++++++++ 6 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html create mode 100644 src-ui/src/app/components/document-asncomponent/document-asncomponent.component.scss create mode 100644 src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts create mode 100644 src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index 27f0629b4..8f9af68ca 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -11,6 +11,7 @@ import { SettingsComponent } from './components/manage/settings/settings.compone import { TagListComponent } from './components/manage/tag-list/tag-list.component'; import { NotFoundComponent } from './components/not-found/not-found.component'; import { SearchComponent } from './components/search/search.component'; +import {DocumentASNComponentComponent} from "./components/document-asncomponent/document-asncomponent.component"; const routes: Routes = [ {path: '', redirectTo: 'dashboard', pathMatch: 'full'}, @@ -20,13 +21,14 @@ const routes: Routes = [ {path: 'view/:id', component: DocumentListComponent }, {path: 'search', component: SearchComponent }, {path: 'documents/:id', component: DocumentDetailComponent }, - + {path: 'asn/:id', component: DocumentASNComponentComponent }, + {path: 'tags', component: TagListComponent }, {path: 'documenttypes', component: DocumentTypeListComponent }, {path: 'correspondents', component: CorrespondentListComponent }, {path: 'logs', component: LogsComponent }, {path: 'settings', component: SettingsComponent }, - ]}, + ]}, {path: '404', component: NotFoundComponent}, {path: '**', redirectTo: '/404', pathMatch: 'full'} diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index ca87d1a07..4645caf4b 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -75,6 +75,7 @@ import localeEnGb from '@angular/common/locales/en-GB'; import localeRo from '@angular/common/locales/ro'; import localeRu from '@angular/common/locales/ru'; import localeEs from '@angular/common/locales/es'; +import { DocumentASNComponentComponent } from './components/document-asncomponent/document-asncomponent.component'; registerLocaleData(localeFr) @@ -138,7 +139,8 @@ registerLocaleData(localeEs) SafePipe, CustomDatePipe, DateComponent, - ColorComponent + ColorComponent, + DocumentASNComponentComponent ], imports: [ BrowserModule, diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html new file mode 100644 index 000000000..aa0cdc641 --- /dev/null +++ b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html @@ -0,0 +1 @@ +

Searching document with asn {{asn}}

diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.scss b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts new file mode 100644 index 000000000..9e1b6c059 --- /dev/null +++ b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentASNComponentComponent } from './document-asncomponent.component'; + +describe('DocumentASNComponentComponent', () => { + let component: DocumentASNComponentComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentASNComponentComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentASNComponentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts new file mode 100644 index 000000000..549cb8792 --- /dev/null +++ b/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts @@ -0,0 +1,38 @@ +import { Component, OnInit } from '@angular/core'; +import {DocumentService} from "../../services/rest/document.service"; +import {ActivatedRoute, Router} from "@angular/router"; +import {CorrespondentService} from "../../services/rest/correspondent.service"; +import {DocumentTypeService} from "../../services/rest/document-type.service"; +import {FILTER_ASN} from "../../data/filter-rule-type"; + +@Component({ + selector: 'app-document-asncomponent', + templateUrl: './document-asncomponent.component.html', + styleUrls: ['./document-asncomponent.component.scss'] +}) +export class DocumentASNComponentComponent implements OnInit { + + asn: string; + constructor( + private documentsService: DocumentService, + private route: ActivatedRoute, + private correspondentService: CorrespondentService, + private documentTypeService: DocumentTypeService, + private router: Router) { } + + + ngOnInit(): void { + + this.route.paramMap.subscribe(paramMap => { + this.asn = paramMap.get('id'); + this.documentsService.listAllFilteredIds([{rule_type: FILTER_ASN, value: this.asn}]).subscribe(documentId => { + if (documentId.length == 1) { + this.router.navigate(['documents', documentId[0]]) + } else { + this.router.navigate(['404']) + } + }) + }) + + } +} From 1ec4570c8ddf738218b20db93650e73b154b39ed Mon Sep 17 00:00:00 2001 From: Tobi Date: Tue, 30 Mar 2021 19:26:20 +0200 Subject: [PATCH 47/93] renames document-asn component --- src-ui/src/app/app-routing.module.ts | 4 ++-- src-ui/src/app/app.module.ts | 4 ++-- .../document-asn.component.html} | 0 .../document-asn.component.scss} | 0 .../document-asn.component.spec.ts} | 10 +++++----- .../document-asn.component.ts} | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) rename src-ui/src/app/components/{document-asncomponent/document-asncomponent.component.html => document-asn/document-asn.component.html} (100%) rename src-ui/src/app/components/{document-asncomponent/document-asncomponent.component.scss => document-asn/document-asn.component.scss} (100%) rename src-ui/src/app/components/{document-asncomponent/document-asncomponent.component.spec.ts => document-asn/document-asn.component.spec.ts} (56%) rename src-ui/src/app/components/{document-asncomponent/document-asncomponent.component.ts => document-asn/document-asn.component.ts} (86%) diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index 8f9af68ca..7658fc77d 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -11,7 +11,7 @@ import { SettingsComponent } from './components/manage/settings/settings.compone import { TagListComponent } from './components/manage/tag-list/tag-list.component'; import { NotFoundComponent } from './components/not-found/not-found.component'; import { SearchComponent } from './components/search/search.component'; -import {DocumentASNComponentComponent} from "./components/document-asncomponent/document-asncomponent.component"; +import {DocumentAsnComponent} from "./components/document-asn/document-asn.component"; const routes: Routes = [ {path: '', redirectTo: 'dashboard', pathMatch: 'full'}, @@ -21,7 +21,7 @@ const routes: Routes = [ {path: 'view/:id', component: DocumentListComponent }, {path: 'search', component: SearchComponent }, {path: 'documents/:id', component: DocumentDetailComponent }, - {path: 'asn/:id', component: DocumentASNComponentComponent }, + {path: 'asn/:id', component: DocumentAsnComponent }, {path: 'tags', component: TagListComponent }, {path: 'documenttypes', component: DocumentTypeListComponent }, diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 4645caf4b..346228b2d 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -75,7 +75,7 @@ import localeEnGb from '@angular/common/locales/en-GB'; import localeRo from '@angular/common/locales/ro'; import localeRu from '@angular/common/locales/ru'; import localeEs from '@angular/common/locales/es'; -import { DocumentASNComponentComponent } from './components/document-asncomponent/document-asncomponent.component'; +import { DocumentAsnComponent } from './components/document-asn/document-asn.component'; registerLocaleData(localeFr) @@ -140,7 +140,7 @@ registerLocaleData(localeEs) CustomDatePipe, DateComponent, ColorComponent, - DocumentASNComponentComponent + DocumentAsnComponent ], imports: [ BrowserModule, diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html b/src-ui/src/app/components/document-asn/document-asn.component.html similarity index 100% rename from src-ui/src/app/components/document-asncomponent/document-asncomponent.component.html rename to src-ui/src/app/components/document-asn/document-asn.component.html diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.scss b/src-ui/src/app/components/document-asn/document-asn.component.scss similarity index 100% rename from src-ui/src/app/components/document-asncomponent/document-asncomponent.component.scss rename to src-ui/src/app/components/document-asn/document-asn.component.scss diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts b/src-ui/src/app/components/document-asn/document-asn.component.spec.ts similarity index 56% rename from src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts rename to src-ui/src/app/components/document-asn/document-asn.component.spec.ts index 9e1b6c059..5a9826f8d 100644 --- a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.spec.ts +++ b/src-ui/src/app/components/document-asn/document-asn.component.spec.ts @@ -1,20 +1,20 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { DocumentASNComponentComponent } from './document-asncomponent.component'; +import { DocumentAsnComponent } from './document-asn.component'; describe('DocumentASNComponentComponent', () => { - let component: DocumentASNComponentComponent; - let fixture: ComponentFixture; + let component: DocumentAsnComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ DocumentASNComponentComponent ] + declarations: [ DocumentAsnComponent ] }) .compileComponents(); }); beforeEach(() => { - fixture = TestBed.createComponent(DocumentASNComponentComponent); + fixture = TestBed.createComponent(DocumentAsnComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts b/src-ui/src/app/components/document-asn/document-asn.component.ts similarity index 86% rename from src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts rename to src-ui/src/app/components/document-asn/document-asn.component.ts index 549cb8792..4c80cedd7 100644 --- a/src-ui/src/app/components/document-asncomponent/document-asncomponent.component.ts +++ b/src-ui/src/app/components/document-asn/document-asn.component.ts @@ -7,10 +7,10 @@ import {FILTER_ASN} from "../../data/filter-rule-type"; @Component({ selector: 'app-document-asncomponent', - templateUrl: './document-asncomponent.component.html', - styleUrls: ['./document-asncomponent.component.scss'] + templateUrl: './document-asn.component.html', + styleUrls: ['./document-asn.component.scss'] }) -export class DocumentASNComponentComponent implements OnInit { +export class DocumentAsnComponent implements OnInit { asn: string; constructor( From b783e0e211023d687de83e1b27d40e67d886c76b Mon Sep 17 00:00:00 2001 From: Tobi Date: Tue, 30 Mar 2021 20:51:49 +0200 Subject: [PATCH 48/93] refactoring --- src-ui/messages.xlf | 161 +++++++++--------- .../document-asn/document-asn.component.html | 2 +- .../document-asn/document-asn.component.ts | 6 +- 3 files changed, 86 insertions(+), 83 deletions(-) diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 959d90a1b..4ffab896d 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -2,48 +2,6 @@ - - Document added - - src/app/app.component.ts - 51 - - - - Document was added to paperless. - - src/app/app.component.ts - 51 - - - - Open document - - src/app/app.component.ts - 51 - - - - Could not add : - - src/app/app.component.ts - 59 - - - - New document detected - - src/app/app.component.ts - 65 - - - - Document is being processed by paperless. - - src/app/app.component.ts - 65 - - Documents @@ -394,6 +352,48 @@ 131 + + Document added + + src/app/app.component.ts + 51 + + + + Document was added to paperless. + + src/app/app.component.ts + 51 + + + + Open document + + src/app/app.component.ts + 51 + + + + Could not add : + + src/app/app.component.ts + 59 + + + + New document detected + + src/app/app.component.ts + 65 + + + + Document is being processed by paperless. + + src/app/app.component.ts + 65 + + Hello , welcome to Paperless-ng! @@ -1626,6 +1626,13 @@ 14 + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Yes @@ -1731,6 +1738,41 @@ 106 + + Correspondent + + src/app/services/rest/document.service.ts + 18 + + + + Document type + + src/app/services/rest/document.service.ts + 20 + + + + Created + + src/app/services/rest/document.service.ts + 21 + + + + Added + + src/app/services/rest/document.service.ts + 22 + + + + Modified + + src/app/services/rest/document.service.ts + 23 + + Document already exists. @@ -1840,41 +1882,6 @@ 39 - - Correspondent - - src/app/services/rest/document.service.ts - 18 - - - - Document type - - src/app/services/rest/document.service.ts - 20 - - - - Created - - src/app/services/rest/document.service.ts - 21 - - - - Added - - src/app/services/rest/document.service.ts - 22 - - - - Modified - - src/app/services/rest/document.service.ts - 23 - - Create new item diff --git a/src-ui/src/app/components/document-asn/document-asn.component.html b/src-ui/src/app/components/document-asn/document-asn.component.html index aa0cdc641..8cb969ea0 100644 --- a/src-ui/src/app/components/document-asn/document-asn.component.html +++ b/src-ui/src/app/components/document-asn/document-asn.component.html @@ -1 +1 @@ -

Searching document with asn {{asn}}

+

Searching document with asn {{asn}}

diff --git a/src-ui/src/app/components/document-asn/document-asn.component.ts b/src-ui/src/app/components/document-asn/document-asn.component.ts index 4c80cedd7..550c331b9 100644 --- a/src-ui/src/app/components/document-asn/document-asn.component.ts +++ b/src-ui/src/app/components/document-asn/document-asn.component.ts @@ -1,8 +1,6 @@ import { Component, OnInit } from '@angular/core'; import {DocumentService} from "../../services/rest/document.service"; import {ActivatedRoute, Router} from "@angular/router"; -import {CorrespondentService} from "../../services/rest/correspondent.service"; -import {DocumentTypeService} from "../../services/rest/document-type.service"; import {FILTER_ASN} from "../../data/filter-rule-type"; @Component({ @@ -12,12 +10,10 @@ import {FILTER_ASN} from "../../data/filter-rule-type"; }) export class DocumentAsnComponent implements OnInit { - asn: string; + asn: string constructor( private documentsService: DocumentService, private route: ActivatedRoute, - private correspondentService: CorrespondentService, - private documentTypeService: DocumentTypeService, private router: Router) { } From a16643ee29c6fa1300ed100824a75f638257252a Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 2 Apr 2021 10:47:11 +0200 Subject: [PATCH 49/93] New Crowdin updates (#847) --- src/locale/it_IT/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index a36ee9d9b..9c7cd71ef 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-23 11:21\n" +"PO-Revision-Date: 2021-04-01 11:51\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -374,11 +374,11 @@ msgstr "Paperless-ng è uscito" #: documents/templates/registration/logged_out.html:41 msgid "You have been successfully logged out. Bye!" -msgstr "Vi siete disconnessi. Ciao!" +msgstr "Ti sei disconnesso. A presto!" #: documents/templates/registration/logged_out.html:42 msgid "Sign in again" -msgstr "Rientra nuovamente" +msgstr "Accedi nuovamente" #: documents/templates/registration/login.html:13 msgid "Paperless-ng sign in" From 704f8ea680d51d3e215f4b99b78d0bc579740e6f Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 2 Apr 2021 14:21:05 +0200 Subject: [PATCH 50/93] update dependencies --- Pipfile.lock | 363 +++++++++++++++++++++++++-------------------------- 1 file changed, 179 insertions(+), 184 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 7b036e19a..bad0dbe79 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -190,22 +190,22 @@ }, "cryptography": { "hashes": [ - "sha256:066bc53f052dfeda2f2d7c195cf16fb3e5ff13e1b6b7415b468514b40b381a5b", - "sha256:0923ba600d00718d63a3976f23cab19aef10c1765038945628cd9be047ad0336", - "sha256:2d32223e5b0ee02943f32b19245b61a62db83a882f0e76cc564e1cec60d48f87", - "sha256:4169a27b818de4a1860720108b55a2801f32b6ae79e7f99c00d79f2a2822eeb7", - "sha256:57ad77d32917bc55299b16d3b996ffa42a1c73c6cfa829b14043c561288d2799", - "sha256:5ecf2bcb34d17415e89b546dbb44e73080f747e504273e4d4987630493cded1b", - "sha256:600cf9bfe75e96d965509a4c0b2b183f74a4fa6f5331dcb40fb7b77b7c2484df", - "sha256:66b57a9ca4b3221d51b237094b0303843b914b7d5afd4349970bb26518e350b0", - "sha256:926ae3dfd160050158b9ca25d419fb7ee658974564b01aa10c059a75dffab7e8", - "sha256:93cfe5b7ff006de13e1e89830810ecbd014791b042cbe5eec253be11ac2b28f3", - "sha256:9e98b452132963678e3ac6c73f7010fe53adf72209a32854d55690acac3f6724", - "sha256:df186fcbf86dc1ce56305becb8434e4b6b7504bc724b71ad7a3239e0c9d14ef2", - "sha256:fec7fb46b10da10d9e1d078d1ff8ed9e05ae14f431fdbd11145edd0550b9a964" + "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", + "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", + "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", + "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", + "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", + "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", + "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", + "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", + "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", + "sha256:a79fef41233d4c535d28133627ce6c7ac73d5cc0eb7316331a5905bf01411f08", + "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", + "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", + "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" ], "index": "pypi", - "version": "==3.4.6" + "version": "==3.4.7" }, "daphne": { "hashes": [ @@ -273,11 +273,11 @@ }, "djangorestframework": { "hashes": [ - "sha256:0209bafcb7b5010fdfec784034f059d512256424de2a0f084cb82b096d6dd6a7", - "sha256:0898182b4737a7b584a2c73735d89816343369f259fea932d90dc78e35d8ac33" + "sha256:6d1d59f623a5ad0509fe0d6bfe93cbdfe17b8116ebc8eda86d45f6e16e819aaf", + "sha256:f747949a8ddac876e879190df194b925c177cdeb725a099db1460872f7c0a7f2" ], "index": "pypi", - "version": "==3.12.2" + "version": "==3.12.4" }, "filelock": { "hashes": [ @@ -300,11 +300,11 @@ }, "gunicorn": { "hashes": [ - "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626", - "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c" + "sha256:8d737657cdd62f483d482ee65cf9cc6a64d5b2199674f8b174803be9065e5d60", + "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8" ], "index": "pypi", - "version": "==20.0.4" + "version": "==20.1.0" }, "h11": { "hashes": [ @@ -316,57 +316,51 @@ }, "hiredis": { "hashes": [ - "sha256:06a039208f83744a702279b894c8cf24c14fd63c59cd917dcde168b79eef0680", - "sha256:0a909bf501459062aa1552be1461456518f367379fdc9fdb1f2ca5e4a1fdd7c0", - "sha256:18402d9e54fb278cb9a8c638df6f1550aca36a009d47ecf5aa263a38600f35b0", - "sha256:1e4cbbc3858ec7e680006e5ca590d89a5e083235988f26a004acf7244389ac01", - "sha256:23344e3c2177baf6975fbfa361ed92eb7d36d08f454636e5054b3faa7c2aff8a", - "sha256:289b31885b4996ce04cadfd5fc03d034dce8e2a8234479f7c9e23b9e245db06b", - "sha256:2c1c570ae7bf1bab304f29427e2475fe1856814312c4a1cf1cd0ee133f07a3c6", - "sha256:2c227c0ed371771ffda256034427320870e8ea2e4fd0c0a618c766e7c49aad73", - "sha256:3bb9b63d319402cead8bbd9dd55dca3b667d2997e9a0d8a1f9b6cc274db4baee", - "sha256:3ef2183de67b59930d2db8b8e8d4d58e00a50fcc5e92f4f678f6eed7a1c72d55", - "sha256:43b8ed3dbfd9171e44c554cb4acf4ee4505caa84c5e341858b50ea27dd2b6e12", - "sha256:47bcf3c5e6c1e87ceb86cdda2ee983fa0fe56a999e6185099b3c93a223f2fa9b", - "sha256:5263db1e2e1e8ae30500cdd75a979ff99dcc184201e6b4b820d0de74834d2323", - "sha256:5b1451727f02e7acbdf6aae4e06d75f66ee82966ff9114550381c3271a90f56c", - "sha256:6996883a8a6ff9117cbb3d6f5b0dcbbae6fb9e31e1a3e4e2f95e0214d9a1c655", - "sha256:6c96f64a54f030366657a54bb90b3093afc9c16c8e0dfa29fc0d6dbe169103a5", - "sha256:7332d5c3e35154cd234fd79573736ddcf7a0ade7a986db35b6196b9171493e75", - "sha256:7885b6f32c4a898e825bb7f56f36a02781ac4a951c63e4169f0afcf9c8c30dfb", - "sha256:7b0f63f10a166583ab744a58baad04e0f52cfea1ac27bfa1b0c21a48d1003c23", - "sha256:819f95d4eba3f9e484dd115ab7ab72845cf766b84286a00d4ecf76d33f1edca1", - "sha256:8968eeaa4d37a38f8ca1f9dbe53526b69628edc9c42229a5b2f56d98bb828c1f", - "sha256:89ebf69cb19a33d625db72d2ac589d26e936b8f7628531269accf4a3196e7872", - "sha256:8daecd778c1da45b8bd54fd41ffcd471a86beed3d8e57a43acf7a8d63bba4058", - "sha256:955ba8ea73cf3ed8bd2f963b4cb9f8f0dcb27becd2f4b3dd536fd24c45533454", - "sha256:964f18a59f5a64c0170f684c417f4fe3e695a536612e13074c4dd5d1c6d7c882", - "sha256:969843fbdfbf56cdb71da6f0bdf50f9985b8b8aeb630102945306cf10a9c6af2", - "sha256:996021ef33e0f50b97ff2d6b5f422a0fe5577de21a8873b58a779a5ddd1c3132", - "sha256:9e9c9078a7ce07e6fce366bd818be89365a35d2e4b163268f0ca9ba7e13bb2f6", - "sha256:9f4e67f87e072de981570eaf7cb41444bbac7e92b05c8651dbab6eb1fb8d5a14", - "sha256:a04901757cb0fb0f5602ac11dda48f5510f94372144d06c2563ba56c480b467c", - "sha256:a7bf1492429f18d205f3a818da3ff1f242f60aa59006e53dee00b4ef592a3363", - "sha256:aa0af2deb166a5e26e0d554b824605e660039b161e37ed4f01b8d04beec184f3", - "sha256:abfb15a6a7822f0fae681785cb38860e7a2cb1616a708d53df557b3d76c5bfd4", - "sha256:b253fe4df2afea4dfa6b1fa8c5fef212aff8bcaaeb4207e81eed05cb5e4a7919", - "sha256:b27f082f47d23cffc4cf1388b84fdc45c4ef6015f906cd7e0d988d9e35d36349", - "sha256:b33aea449e7f46738811fbc6f0b3177c6777a572207412bbbf6f525ffed001ae", - "sha256:b39989b49e8aca9d224324d2650029eda410a4faf43f6afb0eb4f9acb7be6097", - "sha256:b44f9421c4505c548435244d74037618f452844c5d3c67719d8a55e2613549da", - "sha256:bcc371151d1512201d0214c36c0c150b1dc64f19c2b1a8c9cb1d7c7c15ebd93f", - "sha256:c2851deeabd96d3f6283e9c6b26e0bfed4de2dc6fb15edf913e78b79fc5909ed", - "sha256:cdfd501c7ac5b198c15df800a3a34c38345f5182e5f80770caf362bccca65628", - "sha256:d2c0caffa47606d6d7c8af94ba42547bd2a441f06c74fd90a1ffe328524a6c64", - "sha256:dcb2db95e629962db5a355047fb8aefb012df6c8ae608930d391619dbd96fd86", - "sha256:e0eeb9c112fec2031927a1745788a181d0eecbacbed941fc5c4f7bc3f7b273bf", - "sha256:e154891263306200260d7f3051982774d7b9ef35af3509d5adbbe539afd2610c", - "sha256:e2e023a42dcbab8ed31f97c2bcdb980b7fbe0ada34037d87ba9d799664b58ded", - "sha256:e64be68255234bb489a574c4f2f8df7029c98c81ec4d160d6cd836e7f0679390", - "sha256:e82d6b930e02e80e5109b678c663a9ed210680ded81c1abaf54635d88d1da298" + "sha256:04026461eae67fdefa1949b7332e488224eac9e8f2b5c58c98b54d29af22093e", + "sha256:04927a4c651a0e9ec11c68e4427d917e44ff101f761cd3b5bc76f86aaa431d27", + "sha256:07bbf9bdcb82239f319b1f09e8ef4bdfaec50ed7d7ea51a56438f39193271163", + "sha256:09004096e953d7ebd508cded79f6b21e05dff5d7361771f59269425108e703bc", + "sha256:0adea425b764a08270820531ec2218d0508f8ae15a448568109ffcae050fee26", + "sha256:0b39ec237459922c6544d071cdcf92cbb5bc6685a30e7c6d985d8a3e3a75326e", + "sha256:0d5109337e1db373a892fdcf78eb145ffb6bbd66bb51989ec36117b9f7f9b579", + "sha256:0f41827028901814c709e744060843c77e78a3aca1e0d6875d2562372fcb405a", + "sha256:11d119507bb54e81f375e638225a2c057dda748f2b1deef05c2b1a5d42686048", + "sha256:1233e303645f468e399ec906b6b48ab7cd8391aae2d08daadbb5cad6ace4bd87", + "sha256:139705ce59d94eef2ceae9fd2ad58710b02aee91e7fa0ccb485665ca0ecbec63", + "sha256:1f03d4dadd595f7a69a75709bc81902673fa31964c75f93af74feac2f134cc54", + "sha256:240ce6dc19835971f38caf94b5738092cb1e641f8150a9ef9251b7825506cb05", + "sha256:294a6697dfa41a8cba4c365dd3715abc54d29a86a40ec6405d677ca853307cfb", + "sha256:3d55e36715ff06cdc0ab62f9591607c4324297b6b6ce5b58cb9928b3defe30ea", + "sha256:3dddf681284fe16d047d3ad37415b2e9ccdc6c8986c8062dbe51ab9a358b50a5", + "sha256:3f5f7e3a4ab824e3de1e1700f05ad76ee465f5f11f5db61c4b297ec29e692b2e", + "sha256:508999bec4422e646b05c95c598b64bdbef1edf0d2b715450a078ba21b385bcc", + "sha256:5d2a48c80cf5a338d58aae3c16872f4d452345e18350143b3bf7216d33ba7b99", + "sha256:5dc7a94bb11096bc4bffd41a3c4f2b958257085c01522aa81140c68b8bf1630a", + "sha256:65d653df249a2f95673976e4e9dd7ce10de61cfc6e64fa7eeaa6891a9559c581", + "sha256:7492af15f71f75ee93d2a618ca53fea8be85e7b625e323315169977fae752426", + "sha256:7f0055f1809b911ab347a25d786deff5e10e9cf083c3c3fd2dd04e8612e8d9db", + "sha256:807b3096205c7cec861c8803a6738e33ed86c9aae76cac0e19454245a6bbbc0a", + "sha256:81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a", + "sha256:87c7c10d186f1743a8fd6a971ab6525d60abd5d5d200f31e073cd5e94d7e7a9d", + "sha256:8b42c0dc927b8d7c0eb59f97e6e34408e53bc489f9f90e66e568f329bff3e443", + "sha256:a00514362df15af041cc06e97aebabf2895e0a7c42c83c21894be12b84402d79", + "sha256:a39efc3ade8c1fb27c097fd112baf09d7fd70b8cb10ef1de4da6efbe066d381d", + "sha256:a4ee8000454ad4486fb9f28b0cab7fa1cd796fc36d639882d0b34109b5b3aec9", + "sha256:a7928283143a401e72a4fad43ecc85b35c27ae699cf5d54d39e1e72d97460e1d", + "sha256:adf4dd19d8875ac147bf926c727215a0faf21490b22c053db464e0bf0deb0485", + "sha256:ae8427a5e9062ba66fc2c62fb19a72276cf12c780e8db2b0956ea909c48acff5", + "sha256:b4c8b0bc5841e578d5fb32a16e0c305359b987b850a06964bd5a62739d688048", + "sha256:b84f29971f0ad4adaee391c6364e6f780d5aae7e9226d41964b26b49376071d0", + "sha256:c39c46d9e44447181cd502a35aad2bb178dbf1b1f86cf4db639d7b9614f837c6", + "sha256:cb2126603091902767d96bcb74093bd8b14982f41809f85c9b96e519c7e1dc41", + "sha256:dcef843f8de4e2ff5e35e96ec2a4abbdf403bd0f732ead127bd27e51f38ac298", + "sha256:de22905c5920f6a2af2fccc54a7897cf52f1d0a4b9de87f546c6fb70d13e4e0b", + "sha256:e3447d9e074abf0e3cd85aef8131e01ab93f9f0e86654db7ac8a3f73c63706ce", + "sha256:f52010e0a44e3d8530437e7da38d11fb822acfb0d5b12e9cd5ba655509937ca0", + "sha256:f8196f739092a78e4f6b1b2172679ed3343c39c61a3e9d722ce6fcf1dac2824a" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.1.0" + "markers": "python_version >= '3.6'", + "version": "==2.0.0" }, "httptools": { "hashes": [ @@ -468,48 +462,47 @@ }, "lxml": { "hashes": [ - "sha256:0448576c148c129594d890265b1a83b9cd76fd1f0a6a04620753d9a6bcfd0a4d", - "sha256:127f76864468d6630e1b453d3ffbbd04b024c674f55cf0a30dc2595137892d37", - "sha256:1471cee35eba321827d7d53d104e7b8c593ea3ad376aa2df89533ce8e1b24a01", - "sha256:2363c35637d2d9d6f26f60a208819e7eafc4305ce39dc1d5005eccc4593331c2", - "sha256:2e5cc908fe43fe1aa299e58046ad66981131a66aea3129aac7770c37f590a644", - "sha256:2e6fd1b8acd005bd71e6c94f30c055594bbd0aa02ef51a22bbfa961ab63b2d75", - "sha256:366cb750140f221523fa062d641393092813b81e15d0e25d9f7c6025f910ee80", - "sha256:42ebca24ba2a21065fb546f3e6bd0c58c3fe9ac298f3a320147029a4850f51a2", - "sha256:4e751e77006da34643ab782e4a5cc21ea7b755551db202bc4d3a423b307db780", - "sha256:4fb85c447e288df535b17ebdebf0ec1cf3a3f1a8eba7e79169f4f37af43c6b98", - "sha256:50c348995b47b5a4e330362cf39fc503b4a43b14a91c34c83b955e1805c8e308", - "sha256:535332fe9d00c3cd455bd3dd7d4bacab86e2d564bdf7606079160fa6251caacf", - "sha256:535f067002b0fd1a4e5296a8f1bf88193080ff992a195e66964ef2a6cfec5388", - "sha256:5be4a2e212bb6aa045e37f7d48e3e1e4b6fd259882ed5a00786f82e8c37ce77d", - "sha256:60a20bfc3bd234d54d49c388950195d23a5583d4108e1a1d47c9eef8d8c042b3", - "sha256:648914abafe67f11be7d93c1a546068f8eff3c5fa938e1f94509e4a5d682b2d8", - "sha256:681d75e1a38a69f1e64ab82fe4b1ed3fd758717bed735fb9aeaa124143f051af", - "sha256:68a5d77e440df94011214b7db907ec8f19e439507a70c958f750c18d88f995d2", - "sha256:69a63f83e88138ab7642d8f61418cf3180a4d8cd13995df87725cb8b893e950e", - "sha256:6e4183800f16f3679076dfa8abf2db3083919d7e30764a069fb66b2b9eff9939", - "sha256:6fd8d5903c2e53f49e99359b063df27fdf7acb89a52b6a12494208bf61345a03", - "sha256:791394449e98243839fa822a637177dd42a95f4883ad3dec2a0ce6ac99fb0a9d", - "sha256:7a7669ff50f41225ca5d6ee0a1ec8413f3a0d8aa2b109f86d540887b7ec0d72a", - "sha256:7e9eac1e526386df7c70ef253b792a0a12dd86d833b1d329e038c7a235dfceb5", - "sha256:7ee8af0b9f7de635c61cdd5b8534b76c52cd03536f29f51151b377f76e214a1a", - "sha256:8246f30ca34dc712ab07e51dc34fea883c00b7ccb0e614651e49da2c49a30711", - "sha256:8c88b599e226994ad4db29d93bc149aa1aff3dc3a4355dd5757569ba78632bdf", - "sha256:91d6dace31b07ab47eeadd3f4384ded2f77b94b30446410cb2c3e660e047f7a7", - "sha256:923963e989ffbceaa210ac37afc9b906acebe945d2723e9679b643513837b089", - "sha256:94d55bd03d8671686e3f012577d9caa5421a07286dd351dfef64791cf7c6c505", - "sha256:97db258793d193c7b62d4e2586c6ed98d51086e93f9a3af2b2034af01450a74b", - "sha256:a9d6bc8642e2c67db33f1247a77c53476f3a166e09067c0474facb045756087f", - "sha256:cd11c7e8d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc", - "sha256:d8d3d4713f0c28bdc6c806a278d998546e8efc3498949e3ace6e117462ac0a5e", - "sha256:e0bfe9bb028974a481410432dbe1b182e8191d5d40382e5b8ff39cdd2e5c5931", - "sha256:e1dbb88a937126ab14d219a000728224702e0ec0fc7ceb7131c53606b7a76772", - "sha256:f4822c0660c3754f1a41a655e37cb4dbbc9be3d35b125a37fab6f82d47674ebc", - "sha256:f83d281bb2a6217cd806f4cf0ddded436790e66f393e124dfe9731f6b3fb9afe", - "sha256:fc37870d6716b137e80d19241d0e2cff7a7643b925dfa49b4c8ebd1295eb506e" + "sha256:079f3ae844f38982d156efce585bc540c16a926d4436712cf4baee0cce487a3d", + "sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3", + "sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2", + "sha256:1822d16e5ac9061749955d099ff50c6cbc068f8cbfde28dfbeea845f7fbe6e09", + "sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f", + "sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927", + "sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3", + "sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7", + "sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f", + "sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade", + "sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468", + "sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b", + "sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4", + "sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83", + "sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04", + "sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791", + "sha256:74f69060f98a70e3654de3021cd8162859e0f30b9e69aed76ef2b7a2e3b84212", + "sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51", + "sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1", + "sha256:76fa7b1362d19f8fbd3e75fe2fb7c79359b0af8747e6f7141c338f0bee2f871a", + "sha256:7728e05c35412ba36d3e9795ae8995e3c86958179c9770e65558ec3fdfd3724f", + "sha256:8157dadbb09a34a6bd95a50690595e1fa0af1a99445e2744110e3dca7831c4ee", + "sha256:820628b7b3135403540202e60551e741f9b6d3304371712521be939470b454ec", + "sha256:884ab9b29feaca361f7f88d811b1eea9bfca36cf3da27768d28ad45c3ee6f969", + "sha256:89b8b22a5ff72d89d48d0e62abb14340d9e99fd637d046c27b8b257a01ffbe28", + "sha256:92e821e43ad382332eade6812e298dc9701c75fe289f2a2d39c7960b43d1e92a", + "sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa", + "sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106", + "sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d", + "sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4", + "sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0", + "sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4", + "sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2", + "sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0", + "sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654", + "sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2", + "sha256:f8380c03e45cf09f8557bdaa41e1fa7c81f3ae22828e1db470ab2a6c96d8bc23", + "sha256:f90ba11136bfdd25cae3951af8da2e95121c9b9b93727b1b896e3fa105b2f586" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.6.2" + "version": "==4.6.3" }, "msgpack": { "hashes": [ @@ -589,19 +582,19 @@ }, "ocrmypdf": { "hashes": [ - "sha256:2eda9aeef0c6326af8af9605a8b5903ed6ae4a4537d4046d16ad8bb7ff021ec2", - "sha256:4befdf50b6ed3fe3bb9d0ab1801b213e56138e21ba5b4b3f3cada51c72b7a314" + "sha256:329b070959731c277f0df91cfe011dd4da0d6534f23a739a3aa77bdab00fbc2f", + "sha256:b63df1b6bf37f29b41cb07f0328240a235d84c3dffc3a32299c71fa94c92d419" ], "index": "pypi", - "version": "==11.7.2" + "version": "==11.7.3" }, "pathvalidate": { "hashes": [ - "sha256:378c8b319838a255c00ab37f664686b75f0aabea4444d6c5a34effbec6738285", - "sha256:cae8ad5cd9223c5c1f4bc4e2ef0cd4c5e89acd2d698fdb7610ee108b9be654d2" + "sha256:5263a75d6335b2e9ac2010f38fbd85225b8dff274ded63e5ac21d94ce6b130c8", + "sha256:d0dab13e121628829f5aeb01220ca7af00c3b3b2fe5d83dc81fa0612ad58ade9" ], "index": "pypi", - "version": "==2.3.2" + "version": "==2.4.0" }, "pdfminer.six": { "hashes": [ @@ -613,72 +606,72 @@ }, "pikepdf": { "hashes": [ - "sha256:00372f75f630b1eedd22022cad622c7313b7a42c76b6aa9a91cabaa93915cbf0", - "sha256:0168b05e020f8ac3f027c61841bb222bb0876fdc21e1b0e44cfca8c7f188b17a", - "sha256:07a3b156766a45ef04b6919116468456c7d1fa05ac1a5a5999f08fd6213a7ada", - "sha256:087edf03ef41f76c84d7f65cfd325fbea6e684a134463f0d43f57c3e787c57f1", - "sha256:0f2f2dcf3ceab6572cb6f3dc893b49e5db65232a13de03ae87a66aa220e47d96", - "sha256:27ef5649d4a0d511bdffa5752b9a014441d8c09bf955479db53c41ffb94ee1ca", - "sha256:3096d128df599d48a69bbe6a32ecd3c4b8b2219dfb94c91509c781e94c20abb9", - "sha256:45a5988f7db8c428beae7dd648df30431e1d7892f3901f4c20bb618ed3e29244", - "sha256:5e9d5789ace2ac4007916848a5cc59bc4a1aa020a794cb384538ca0f0b9b9fe6", - "sha256:63b0a1b4c43deb618f3ebaed0e5861bff658916ea02ac2f6adacf8912b702628", - "sha256:68523f606575aef92a1f6d6de030d5e82f7e3e8712f53e36c9fa5c635e15794e", - "sha256:6bea9cf387709dd478a85f737f972a910bb0dbfa055ee636a41f0c425a769057", - "sha256:71fe23a61607ac85cf357baef42be55d525f5d5c9f560482862beaf59e5dc2bc", - "sha256:780082b54e502fb76af082dc6a1cbed635205a319aa54a9e0f0570bed20c9edf", - "sha256:7a816f4bb461366dad0165a1c81294d5e9a60009cbb5c803e2519eb0d250e757", - "sha256:88373178c1020b9f391f929e5f86056a9d920301f82e5489146af629fa4654d0", - "sha256:96c8bf46ac27482a9ca00565f41ddde546fff35c50db61eefaeb88849bcb9895", - "sha256:99c19cf0dd0fc89fc9e6a0de61e974e34d4111dd69802aeaee3e61fb1a74a3d8", - "sha256:bad118d9104fffc06664d51c8716a905e5d712b85ed65edc56a708486803f70f", - "sha256:bae06503ed36167b2ea5ea25003692d3edbf95bea2e67a1d595984c91d783eb4", - "sha256:cd73a1e82cfa5d378adccf9c44b0060c2d3c5e36958f0b5ecedb3f8e81742582", - "sha256:dd65214e23e2cc883af8c2341e6fe7ae71225fa644517ac25110d6ad2b31f026", - "sha256:fd1e339322c94b0c398aaa37d517c24a3db7bbda4fdc6bf57af3894293b8e1a6" + "sha256:018ee534527debd2cfcde0dd856a454a218ddb57e5ba1240810489e50be70a6e", + "sha256:19e4fdafb66b2093b42cd81230122f4789d0ef90d85d451bcb0249739295303d", + "sha256:232789113d6044816e5eeff0061e9014febfc889cf24be9fb17d172c504c1b53", + "sha256:6637f1895e5e93b2032077ded757846c9a90147fb9195bb73dd4b8a2f333e888", + "sha256:7a804515942049f846d548d3b817317f8136e06938737ff64b79c82d61908e27", + "sha256:7c90ae70684efad9477c4ada293187a4542afd685029f82b478f011d4f8cdcc0", + "sha256:7dea84178ebfb35195eedca47a38d99ca8264e1c6e8ff6f37ccb5d7b2ca903d3", + "sha256:95f36bd3920159320547c61c7aa753b9a423e43fedb350617c7eb9925bf48618", + "sha256:a5b57f1b5d5df49b0269e8039b1ba08abb42fdd6f5b6c4b49635be754a77472a", + "sha256:ae8ead8f975864aaf97b24cd916d1bf2e536eb64e7afb65ca679ed29b1ca5b89", + "sha256:b11e1bbc38eb90bfbf2eb0f2f50b300c4142732c148802d6e5f4caa5727fc81e", + "sha256:b192cb3f087509075febb28652d48800da1f3fc1842f94cea25a49fba7350a06", + "sha256:c024de7e57329353f82d287ca13e118e1438b6fd94b33475a474cd7fd16fbb8d", + "sha256:d05a5d22f1bec0979678388c453644f83f74348ab821815b9f1ccb947d4a21e4", + "sha256:d124e11eaacf5fe1bf77ca4c1b6b1a8d5285d00d3593c5cb6eba53058cdf9dae", + "sha256:dde6fde7a32c31aa515782ea967e32dbea97a19ef3fbbde45a93c5f65cabb36f", + "sha256:e03dd2131eba5c966fbb46b675006753945a251e9e9ad44ef141257db37b9c1a", + "sha256:e345206fe51b862022ece4e4e7468bbb955eacda9a9684387ff2f1c91c1def03", + "sha256:e7295619ea4b0fa714bfff24aaf865f7e6c298e82e77ce127b6a76f47377f7f3", + "sha256:f0cdb331b585074a50e9c8a967f68b905aa8674cc3d6577f004a93414f70f211", + "sha256:f3bd63e6db4a105074f6b5951a71313bc0ca8530b0050e3a03680639d05b5500", + "sha256:f6aaf410174ba10df545ccb6fe9b42fa5fd34b1bb4df366722af640275f3406a", + "sha256:ff48af76f461f40f36917baad52918f9afcb45762a7f4c07b6a7ec7e976d558d" ], "index": "pypi", - "version": "==2.9.1" + "version": "==2.10.0" }, "pillow": { "hashes": [ - "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af", - "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1", - "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c", - "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55", - "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060", - "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e", - "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8", - "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e", - "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0", - "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328", - "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238", - "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733", - "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03", - "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06", - "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71", - "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b", - "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6", - "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910", - "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce", - "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28", - "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d", - "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb", - "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6", - "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09", - "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be", - "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0", - "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44", - "sha256:bd08a7e01d388c5e0b5b46b52081e01dc96ef226aeed13fa1d7af94b81d4e93b", - "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1", - "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341", - "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34", - "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2", - "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a", - "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5" + "sha256:01425106e4e8cee195a411f729cff2a7d61813b0b11737c12bd5991f5f14bcd5", + "sha256:031a6c88c77d08aab84fecc05c3cde8414cd6f8406f4d2b16fed1e97634cc8a4", + "sha256:083781abd261bdabf090ad07bb69f8f5599943ddb539d64497ed021b2a67e5a9", + "sha256:0d19d70ee7c2ba97631bae1e7d4725cdb2ecf238178096e8c82ee481e189168a", + "sha256:0e04d61f0064b545b989126197930807c86bcbd4534d39168f4aa5fda39bb8f9", + "sha256:12e5e7471f9b637762453da74e390e56cc43e486a88289995c1f4c1dc0bfe727", + "sha256:22fd0f42ad15dfdde6c581347eaa4adb9a6fc4b865f90b23378aa7914895e120", + "sha256:238c197fc275b475e87c1453b05b467d2d02c2915fdfdd4af126145ff2e4610c", + "sha256:3b570f84a6161cf8865c4e08adf629441f56e32f180f7aa4ccbd2e0a5a02cba2", + "sha256:3da86987a323708512d4d35939b29854286ad88940ee10f2eac48bfec9dba678", + "sha256:463822e2f0d81459e113372a168f2ff59723e78528f91f0bd25680ac185cf797", + "sha256:4d98abdd6b1e3bf1a1cbb14c3895226816e666749ac040c4e2554231068c639b", + "sha256:5afe6b237a0b81bd54b53f835a153770802f164c5570bab5e005aad693dab87f", + "sha256:5b70110acb39f3aff6b74cf09bb4169b167e2660dabc304c1e25b6555fa781ef", + "sha256:5cbf3e3b1014dddc45496e8cf38b9f099c95a326275885199f427825c6522232", + "sha256:624b977355cde8b065f6d51b98497d6cd5fbdd4f36405f7a8790e3376125e2bb", + "sha256:63728564c1410d99e6d1ae8e3b810fe012bc440952168af0a2877e8ff5ab96b9", + "sha256:66cc56579fd91f517290ab02c51e3a80f581aba45fd924fcdee01fa06e635812", + "sha256:6c32cc3145928c4305d142ebec682419a6c0a8ce9e33db900027ddca1ec39178", + "sha256:8bb1e155a74e1bfbacd84555ea62fa21c58e0b4e7e6b20e4447b8d07990ac78b", + "sha256:95d5ef984eff897850f3a83883363da64aae1000e79cb3c321915468e8c6add5", + "sha256:a013cbe25d20c2e0c4e85a9daf438f85121a4d0344ddc76e33fd7e3965d9af4b", + "sha256:a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1", + "sha256:a7d5e9fad90eff8f6f6106d3b98b553a88b6f976e51fce287192a5d2d5363713", + "sha256:aac00e4bc94d1b7813fe882c28990c1bc2f9d0e1aa765a5f2b516e8a6a16a9e4", + "sha256:b91c36492a4bbb1ee855b7d16fe51379e5f96b85692dc8210831fbb24c43e484", + "sha256:c03c07ed32c5324939b19e36ae5f75c660c81461e312a41aea30acdd46f93a7c", + "sha256:c5236606e8570542ed424849f7852a0ff0bce2c4c8d0ba05cc202a5a9c97dee9", + "sha256:c6b39294464b03457f9064e98c124e09008b35a62e3189d3513e5148611c9388", + "sha256:cb7a09e173903541fa888ba010c345893cd9fc1b5891aaf060f6ca77b6a3722d", + "sha256:d68cb92c408261f806b15923834203f024110a2e2872ecb0bd2a110f89d3c602", + "sha256:dc38f57d8f20f06dd7c3161c59ca2c86893632623f33a42d592f097b00f720a9", + "sha256:e98eca29a05913e82177b3ba3d198b1728e164869c613d76d0de4bde6768a50e", + "sha256:f217c3954ce5fd88303fc0c317af55d5e0204106d86dea17eb8205700d47dec2" ], "index": "pypi", - "version": "==8.1.2" + "version": "==8.2.0" }, "pluggy": { "hashes": [ @@ -690,11 +683,11 @@ }, "portalocker": { "hashes": [ - "sha256:afa66c85041d7bac1532acb74ff26cc2406472dcf7145c90c31ff8ca4f1cc146", - "sha256:e5f6ffb2f360e9aef615a7c284143d2a93bb640c62e8e45a703e6083fc5aa114" + "sha256:1d43fd8223e1743f5725e8910f69e7a45858ffd298e19252633ac903eafd83bc", + "sha256:4e913d807aa6598c320e8a50c50e2ee0602bc45240b485e3f8bc06f13060084c" ], "markers": "python_version >= '3'", - "version": "==2.2.1" + "version": "==2.3.0" }, "psycopg2-binary": { "hashes": [ @@ -801,11 +794,11 @@ }, "python-dotenv": { "hashes": [ - "sha256:0c8d1b80d1a1e91717ea7d526178e3882732420b03f08afea0406db6402e220e", - "sha256:587825ed60b1711daea4832cf37524dfd404325b7db5e25ebe88c495c9f807a0" + "sha256:31d752f5b748f4e292448c9a0cac6a08ed5e6f4cefab85044462dcad56905cec", + "sha256:9fa413c37d4652d3fa02fea0ff465c384f5db75eab259c4fc5d0c5b8bf20edd4" ], "index": "pypi", - "version": "==0.15.0" + "version": "==0.16.0" }, "python-gnupg": { "hashes": [ @@ -1245,6 +1238,7 @@ "sha256:12588a46ae0a99f172c4524cbbc3bb870f32e0f8405e9fa11a5ef3fa3a808ad7", "sha256:16caa44a06f6b0b2f7626ced4b193c1ae5d09c1b49c9b4962c93ae8aa2134f55", "sha256:18c478b89b6505756f007dcf76a67224a23dcf0f365427742ed0c0473099caa4", + "sha256:1bbb0bca8a3556a21f7b66c0a18876d8c617ddeda00982204b6218170b39526a", "sha256:221b41442cf4428fcda7fc958c9721c916709e2a3a9f584edd70f1493a09a762", "sha256:26109c50ccbcc10f651f76277cfc05fba8418a907daccc300c9247f24b3158a2", "sha256:28d8157f8c77662a1e0796a7d3cfa8910289131d4b4dd4e10b2686ab1309b67b", @@ -1284,6 +1278,7 @@ "sha256:d12895cd083e35e9e032eb4b57645b91116f8979527381a8d864d1f6b8cb4a2e", "sha256:d3cd9bad547a8e5fbe712a1dc1413aff1b917e8d39a2cd1389a6f933b7a21460", "sha256:e8809b01f27f679e3023b9e2013051e0a3f17abff4228cb5197663afd8a0f2c7", + "sha256:e8d49011baa7ce7765db46e53cfc8d125463a58e3eb478111b2c0c00ca098a33", "sha256:f3c37b0dc1898e305aad4f7a1d75f6da83036588c28a9ce0afc681ff5245a601", "sha256:f966765f54b536e791541458de84a737a6adba8467190f17a8fe7f85354ba908", "sha256:fa939c2e2468142c9773443d4038e7c915b0cc1b670d3c9192bdc503f7ea73e9", @@ -1453,11 +1448,11 @@ }, "faker": { "hashes": [ - "sha256:60a7263104ef7a14ecfe2af1142d53924aa534ccec85cea82bb67b2b32f84421", - "sha256:f43ac743c34affb1c7fccca8b06450371cd482b6ddcb4110e420acb24356e70b" + "sha256:08c4cfbfd498c0e90aff6741771c01803d894013df858db6a573182c6a47951f", + "sha256:20c6e4253b73ef2a783d38e085e7c8d8916295fff31c7403116d2af8f908f7ca" ], "markers": "python_version >= '3.6'", - "version": "==6.6.2" + "version": "==7.0.1" }, "filelock": { "hashes": [ From 87d2209e6d10a344959cf273c4e2ba3fb8fbbe6b Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 2 Apr 2021 14:26:20 +0200 Subject: [PATCH 51/93] update dependencies --- requirements.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/requirements.txt b/requirements.txt index 33d44f136..853cd6f77 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,7 +24,7 @@ click==7.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, coloredlogs==15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' concurrent-log-handler==0.9.19 constantly==15.1.0 -cryptography==3.4.6 +cryptography==3.4.7 daphne==3.0.1; python_version >= '3.6' dateparser==1.0.0 django-cors-headers==3.7.0 @@ -33,12 +33,12 @@ django-filter==2.4.0 django-picklefield==3.0.1; python_version >= '3' django-q==1.3.4 django==3.1.7 -djangorestframework==3.12.2 +djangorestframework==3.12.4 filelock==3.0.12 fuzzywuzzy[speedup]==0.18.0 -gunicorn==20.0.4 +gunicorn==20.1.0 h11==0.12.0; python_version >= '3.6' -hiredis==1.1.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +hiredis==2.0.0; python_version >= '3.6' httptools==0.1.1 humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' hyperlink==21.0.0 @@ -50,23 +50,23 @@ inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3 inotifyrecursive==0.3.5 joblib==1.0.1; python_version >= '3.6' langdetect==1.0.8 -lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +lxml==4.6.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' msgpack==1.0.2 numpy==1.19.5 -ocrmypdf==11.7.2 -pathvalidate==2.3.2 +ocrmypdf==11.7.3 +pathvalidate==2.4.0 pdfminer.six==20201018 -pikepdf==2.9.1 -pillow==8.1.2 +pikepdf==2.10.0 +pillow==8.2.0 pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -portalocker==2.2.1; python_version >= '3' +portalocker==2.3.0; python_version >= '3' psycopg2-binary==2.8.6 pyasn1-modules==0.2.8 pyasn1==0.4.8 pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' python-dateutil==2.8.1 -python-dotenv==0.15.0 +python-dotenv==0.16.0 python-gnupg==0.4.7 python-levenshtein==0.12.2 python-magic==0.4.22 From e906bf58f07c808f9bd168f69b74ca1af88a7ff9 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 2 Apr 2021 14:46:45 +0200 Subject: [PATCH 52/93] Save list view state across sessions --- src-ui/src/app/services/document-list-view.service.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 334706a3c..4745ffcea 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -197,7 +197,7 @@ export class DocumentListViewService { sortField: this.activeListViewState.sortField, sortReverse: this.activeListViewState.sortReverse } - sessionStorage.setItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG, JSON.stringify(savedState)) + localStorage.setItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG, JSON.stringify(savedState)) } } @@ -318,7 +318,7 @@ export class DocumentListViewService { } constructor(private documentService: DocumentService, private settings: SettingsService, private router: Router) { - let documentListViewConfigJson = sessionStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) + let documentListViewConfigJson = localStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) if (documentListViewConfigJson) { try { let savedState: ListViewState = JSON.parse(documentListViewConfigJson) @@ -332,7 +332,7 @@ export class DocumentListViewService { let newState = Object.assign(this.defaultListViewState(), savedState) this.listViewStates.set(null, newState) } catch (e) { - sessionStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) + localStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) } } } From cd85d4e86afb9d9a251d3e0185112c5aee210c8d Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Fri, 2 Apr 2021 14:59:02 +0200 Subject: [PATCH 53/93] update tooltips and messages --- src-ui/messages.xlf | 175 ++++++++++-------- .../document-card-small.component.html | 10 +- 2 files changed, 107 insertions(+), 78 deletions(-) diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 4ffab896d..880a32b1b 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -2,6 +2,48 @@ + + Document added + + src/app/app.component.ts + 51 + + + + Document was added to paperless. + + src/app/app.component.ts + 51 + + + + Open document + + src/app/app.component.ts + 51 + + + + Could not add : + + src/app/app.component.ts + 59 + + + + New document detected + + src/app/app.component.ts + 65 + + + + Document is being processed by paperless. + + src/app/app.component.ts + 65 + + Documents @@ -352,48 +394,6 @@ 131 - - Document added - - src/app/app.component.ts - 51 - - - - Document was added to paperless. - - src/app/app.component.ts - 51 - - - - Open document - - src/app/app.component.ts - 51 - - - - Could not add : - - src/app/app.component.ts - 59 - - - - New document detected - - src/app/app.component.ts - 65 - - - - Document is being processed by paperless. - - src/app/app.component.ts - 65 - - Hello , welcome to Paperless-ng! @@ -1236,6 +1236,27 @@ 66 + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Error executing bulk operation: @@ -1738,41 +1759,6 @@ 106 - - Correspondent - - src/app/services/rest/document.service.ts - 18 - - - - Document type - - src/app/services/rest/document.service.ts - 20 - - - - Created - - src/app/services/rest/document.service.ts - 21 - - - - Added - - src/app/services/rest/document.service.ts - 22 - - - - Modified - - src/app/services/rest/document.service.ts - 23 - - Document already exists. @@ -1882,6 +1868,41 @@ 39 + + Correspondent + + src/app/services/rest/document.service.ts + 18 + + + + Document type + + src/app/services/rest/document.service.ts + 20 + + + + Created + + src/app/services/rest/document.service.ts + 21 + + + + Added + + src/app/services/rest/document.service.ts + 22 + + + + Modified + + src/app/services/rest/document.service.ts + 23 + + Create new item diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html index 0c66419e8..abe9f5299 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html @@ -38,7 +38,15 @@ {{(document.document_type$ | async)?.name}}
-
+ +
+ Created: {{ document.created | customDate}} + Added: {{ document.added | customDate}} + Modified: {{ document.modified | customDate}} +
+
+ +
-
- + + (blur)="onTouched()"> - -
- -
+ + + +
{{hint}} diff --git a/src-ui/src/app/components/common/input/select/select.component.ts b/src-ui/src/app/components/common/input/select/select.component.ts index 408b3a73a..878254318 100644 --- a/src-ui/src/app/components/common/input/select/select.component.ts +++ b/src-ui/src/app/components/common/input/select/select.component.ts @@ -16,6 +16,7 @@ export class SelectComponent extends AbstractInputComponent { constructor() { super() + this.addItemRef = this.addItem.bind(this) } @Input() @@ -36,9 +37,9 @@ export class SelectComponent extends AbstractInputComponent { @Output() createNew = new EventEmitter() - private _lastSearchTerm: string + public addItemRef: (name) => void - showPlusButton(): boolean { + get allowCreateNew(): boolean { return this.createNew.observers.length > 0 } @@ -50,23 +51,8 @@ export class SelectComponent extends AbstractInputComponent { } } - clickNew() { - this.createNew.next(this._lastSearchTerm) - this.clearLastSearchTerm() - } - - clearLastSearchTerm() { - this._lastSearchTerm = null - } - - onSearch($event) { - this._lastSearchTerm = $event.term - } - - onBlur() { - setTimeout(() => { - this.clearLastSearchTerm() - }, 3000); + addItem(name: string) { + this.createNew.next(name) } } diff --git a/src-ui/src/app/components/common/input/tags/tags.component.html b/src-ui/src/app/components/common/input/tags/tags.component.html index 6eda2a44d..b8d4f074e 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.html +++ b/src-ui/src/app/components/common/input/tags/tags.component.html @@ -1,17 +1,16 @@
-
+
+ (blur)="onTouched()"> @@ -27,14 +26,6 @@
- -
- -
{{hint}} diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index 44b2e282e..2ab6a02b5 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -17,8 +17,9 @@ import { TagService } from 'src/app/services/rest/tag.service'; }) export class TagsComponent implements OnInit, ControlValueAccessor { - constructor(private tagService: TagService, private modalService: NgbModal) { } - + constructor(private tagService: TagService, private modalService: NgbModal) { + this.createTagRef = this.createTag.bind(this) + } onChange = (newValue: number[]) => {}; @@ -55,8 +56,8 @@ export class TagsComponent implements OnInit, ControlValueAccessor { value: number[] tags: PaperlessTag[] - - private _lastSearchTerm: string + + public createTagRef: (name) => void getTag(id) { if (this.tags) { @@ -76,10 +77,10 @@ export class TagsComponent implements OnInit, ControlValueAccessor { } } - createTag() { + createTag(name: string = null) { var modal = this.modalService.open(TagEditDialogComponent, {backdrop: 'static'}) modal.componentInstance.dialogMode = 'create' - if (this._lastSearchTerm) modal.componentInstance.object = { name: this._lastSearchTerm } + if (name) modal.componentInstance.object = { name: name } modal.componentInstance.success.subscribe(newTag => { this.tagService.listAll().subscribe(tags => { this.tags = tags.results @@ -102,18 +103,4 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) } - clearLastSearchTerm() { - this._lastSearchTerm = null - } - - onSearch($event) { - this._lastSearchTerm = $event.term - } - - onBlur() { - setTimeout(() => { - this.clearLastSearchTerm() - }, 3000); - } - } diff --git a/src-ui/src/styles.scss b/src-ui/src/styles.scss index 34f575a05..8c48dcddc 100644 --- a/src-ui/src/styles.scss +++ b/src-ui/src/styles.scss @@ -77,8 +77,6 @@ body { .ng-select-container { height: 100%; - border-top-right-radius: 0; - border-bottom-right-radius: 0; .ng-value-container .ng-input { top: 10px; From 38a386d5ae711ddd5a0269b9867fd4af2505f876 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:02:13 +0200 Subject: [PATCH 55/93] fix date filtering for full text search --- src/documents/index.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index a75534514..ec8057403 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -3,6 +3,7 @@ import os from contextlib import contextmanager import math +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 @@ -174,13 +175,17 @@ class DelayedQuery: elif k == 'document_type__isnull': criterias.append(query.Term("has_type", v == "false")) elif k == 'created__date__lt': - pass + criterias.append( + query.DateRange("created", start=None, end=isoparse(v))) elif k == 'created__date__gt': - pass + criterias.append( + query.DateRange("created", start=isoparse(v), end=None)) elif k == 'added__date__gt': - pass + criterias.append( + query.DateRange("added", start=isoparse(v), end=None)) elif k == 'added__date__lt': - pass + criterias.append( + query.DateRange("added", start=None, end=isoparse(v))) if len(criterias) > 0: return query.And(criterias) else: From fb1e9fe66a8758ee5cc6c0de798ad3926abef950 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:02:33 +0200 Subject: [PATCH 56/93] error messages for invalid search queries --- .../document-list.component.html | 171 +++++++++--------- .../services/document-list-view.service.ts | 6 +- 2 files changed, 94 insertions(+), 83 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index 63900b399..f1f21b19c 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -89,86 +89,95 @@ [rotate]="true" aria-label="Default pagination">
-
- - -
+ + + - - - - - - - - - - - - - - - - - - - - - -
ASNCorrespondentTitleDocument typeCreatedAdded
-
- - -
-
- {{d.archive_serial_number}} - - - {{(d.correspondent$ | async)?.name}} - - - {{d.title | documentTitle}} - - - - {{(d.document_type$ | async)?.name}} - - - {{d.created | customDate}} - - {{d.added | customDate}} -
+ -
- -
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
ASNCorrespondentTitleDocument typeCreatedAdded
+
+ + +
+
+ {{d.archive_serial_number}} + + + {{(d.correspondent$ | async)?.name}} + + + {{d.title | documentTitle}} + + + + {{(d.document_type$ | async)?.name}} + + + {{d.created | customDate}} + + {{d.added | customDate}} +
+ +
+ +
+ + +
diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 91c2c870a..b542358c7 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -1,9 +1,7 @@ -import { Route } from '@angular/compiler/src/core'; import { Injectable } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { cloneFilterRules, FilterRule } from '../data/filter-rule'; -import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from '../data/filter-rule-type'; import { PaperlessDocument } from '../data/paperless-document'; import { PaperlessSavedView } from '../data/paperless-saved-view'; import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys'; @@ -40,6 +38,7 @@ interface ListViewState { export class DocumentListViewService { isReloading: boolean = false + error: string = null rangeSelectionAnchorIndex: number lastRangeSelectionToIndex: number @@ -103,6 +102,7 @@ export class DocumentListViewService { reload(onFinish?) { this.isReloading = true + this.error = null let activeListViewState = this.activeListViewState this.documentService.listFiltered( @@ -126,6 +126,8 @@ export class DocumentListViewService { // this happens when applying a filter: the current page might not be available anymore due to the reduced result set. activeListViewState.currentPage = 1 this.reload() + } else { + this.error = error.error } }) } From 1ed9c245f5fa3e1a9effd0df73d496d7d7dc318e Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:07:36 +0200 Subject: [PATCH 57/93] fixed more like this --- .../app/components/document-list/document-list.component.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index c0ad354ba..aa534e23e 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -2,6 +2,7 @@ import { Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from import { ActivatedRoute, Router } from '@angular/router'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Subscription } from 'rxjs'; +import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type'; import { PaperlessDocument } from 'src/app/data/paperless-document'; import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; import { SortableDirective, SortEvent } from 'src/app/directives/sortable.directive'; @@ -208,10 +209,7 @@ export class DocumentListComponent implements OnInit, OnDestroy { } clickMoreLike(documentID: number) { - this.list.selectNone() - setTimeout(() => { - //this.filterEditor.moreLikeThis(doc) - }) + this.list.quickFilter([{rule_type: FILTER_FULLTEXT_MORELIKE, value: documentID.toString()}]) } trackByDocumentId(index, item: PaperlessDocument) { From b7063b199a4d0483d872fe5c1e6001385f063392 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:49:31 +0200 Subject: [PATCH 58/93] disable sorting for now --- src/documents/index.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index ec8057403..e17c82daa 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -193,20 +193,21 @@ class DelayedQuery: @property def _query_sortedby(self): - if not 'ordering' in self.query_params: - return None, False + # if not 'ordering' in self.query_params: + return None, False - o: str = self.query_params['ordering'] - if o.startswith('-'): - return o[1:], True - else: - return o, False + # o: str = self.query_params['ordering'] + # if o.startswith('-'): + # return o[1:], True + # else: + # return o, False def __init__(self, searcher: Searcher, query_params, page_size): self.searcher = searcher self.query_params = query_params self.page_size = page_size self.saved_results = dict() + self.first_score = None def __len__(self): page = self[0:1] @@ -219,7 +220,6 @@ class DelayedQuery: q, mask = self._query sortedby, reverse = self._query_sortedby - print("OY", self.page_size) page: ResultsPage = self.searcher.search_page( q, mask=mask, @@ -233,6 +233,15 @@ class DelayedQuery: surround=50) page.results.formatter = HtmlFormatter(tagname="span", between=" ... ") + if not self.first_score and len(page.results) > 0: + 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 + )) + self.saved_results[item.start] = page return page From be87caf7f65cdf315d11316ac40c647174e8ac11 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:50:05 +0200 Subject: [PATCH 59/93] fix search scores --- .../document-card-large.component.html | 8 ++++---- .../document-card-large.component.ts | 17 ++++++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html index f3037b4fc..3a552eb4e 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html @@ -62,10 +62,6 @@
-
- Score: - -
+
+ Score: + +
diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts index 0b7b7d793..d8f29ef5a 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts @@ -41,21 +41,20 @@ export class DocumentCardLargeComponent implements OnInit { @Output() clickMoreLike= new EventEmitter() - @Input() - searchScore: number - @ViewChild('popover') popover: NgbPopover mouseOnPreview = false popoverHidden = true get searchScoreClass() { - if (this.searchScore > 0.7) { - return "success" - } else if (this.searchScore > 0.3) { - return "warning" - } else { - return "danger" + if (this.document.__search_hit__) { + if (this.document.__search_hit__.score > 0.7) { + return "success" + } else if (this.document.__search_hit__.score > 0.3) { + return "warning" + } else { + return "danger" + } } } From 3dfe5c92628d4c41d89dbd89f753b7485da0eeeb Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:50:23 +0200 Subject: [PATCH 60/93] fix page out of range with full text --- src/documents/views.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/documents/views.py b/src/documents/views.py index f61933e16..71b01cdd6 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -17,6 +17,7 @@ from django_filters.rest_framework import DjangoFilterBackend from django_q.tasks import async_task from rest_framework import parsers from rest_framework.decorators import action +from rest_framework.exceptions import NotFound from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.generics import GenericAPIView from rest_framework.mixins import ( @@ -382,6 +383,8 @@ class UnifiedSearchViewSet(DocumentViewSet): with index.open_index_searcher() as s: self.searcher = s return super(UnifiedSearchViewSet, self).list(request) + except NotFound: + raise except Exception as e: return HttpResponseBadRequest(str(e)) else: From 4e289c7dab2391a6fd1c0ad2f39f09975f25533a Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 21:56:33 +0200 Subject: [PATCH 61/93] rename search --- .../document-list/filter-editor/filter-editor.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 3b645ec97..16c342308 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -85,7 +85,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { {id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`}, {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`}, {id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`}, - {id: TEXT_FILTER_TARGET_FULLTEXT_QUERY, name: $localize`Fulltext search`} + {id: TEXT_FILTER_TARGET_FULLTEXT_QUERY, name: $localize`Advanced search`} ] if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) { targets.push({id: TEXT_FILTER_TARGET_FULLTEXT_MORELIKE, name: $localize`More like`}) From 18c028cafd3d89cc8d0fea8463c55f11275ab121 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 3 Apr 2021 13:10:39 -0700 Subject: [PATCH 62/93] Suppport search term PDF open parameter --- .../filter-editor/filter-editor.component.ts | 5 ++++- src-ui/src/app/services/rest/document.service.ts | 14 +++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 43387c08f..c1b0f509a 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -11,6 +11,7 @@ import { FilterRule } from 'src/app/data/filter-rule'; import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type'; import { FilterableDropdownSelectionModel } from '../../common/filterable-dropdown/filterable-dropdown.component'; import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component'; +import { DocumentService } from 'src/app/services/rest/document.service'; const TEXT_FILTER_TARGET_TITLE = "title" const TEXT_FILTER_TARGET_TITLE_CONTENT = "title-content" @@ -64,7 +65,8 @@ export class FilterEditorComponent implements OnInit, OnDestroy { constructor( private documentTypeService: DocumentTypeService, private tagService: TagService, - private correspondentService: CorrespondentService + private correspondentService: CorrespondentService, + private documentService: DocumentService ) { } tags: PaperlessTag[] = [] @@ -223,6 +225,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { distinctUntilChanged() ).subscribe(text => { this._textFilter = text + this.documentService.setSearchQuery(text) this.updateRules() }) } diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 40dbc64f7..40a400f0c 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -12,6 +12,7 @@ import { DocumentTypeService } from './document-type.service'; import { TagService } from './tag.service'; import { FILTER_RULE_TYPES } from 'src/app/data/filter-rule-type'; import { PaperlessDocumentSuggestions } from 'src/app/data/paperless-document-suggestions'; +import { ActivatedRoute } from '@angular/router'; export const DOCUMENT_SORT_FIELDS = [ { field: 'archive_serial_number', name: $localize`ASN` }, @@ -39,8 +40,14 @@ export interface SelectionData { }) export class DocumentService extends AbstractPaperlessService { - constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService) { + private searchQuery: string + + constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService, private route: ActivatedRoute) { super(http, 'documents') + + this.route.queryParamMap.subscribe(paramMap => { + this.searchQuery = paramMap.get('query') + }) } private filterRulesToQueryParams(filterRules: FilterRule[]) { @@ -92,6 +99,7 @@ export class DocumentService extends AbstractPaperlessService getPreviewUrl(id: number, original: boolean = false): string { let url = this.getResourceUrl(id, 'preview') + if (this.searchQuery) url += `#search="${this.searchQuery}"` if (original) { url += "?original=true" } @@ -138,4 +146,8 @@ export class DocumentService extends AbstractPaperlessService return this.http.post(this.getResourceUrl(null, 'bulk_download'), {"documents": ids, "content": content}, { responseType: 'blob' }) } + public setSearchQuery(query: string) { + this.searchQuery = query + } + } From fffe4f694fa4bad6ad3985fcdbc0d236f5eb6ecc Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 3 Apr 2021 22:19:12 +0200 Subject: [PATCH 63/93] reset page when doing full text search --- src-ui/src/app/services/document-list-view.service.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index b542358c7..aa82190d7 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { cloneFilterRules, FilterRule } from '../data/filter-rule'; +import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from '../data/filter-rule-type'; import { PaperlessDocument } from '../data/paperless-document'; import { PaperlessSavedView } from '../data/paperless-saved-view'; import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys'; @@ -134,6 +135,9 @@ export class DocumentListViewService { set filterRules(filterRules: FilterRule[]) { this.activeListViewState.filterRules = filterRules + if (filterRules.find(r => (r.rule_type == FILTER_FULLTEXT_QUERY || r.rule_type == FILTER_FULLTEXT_MORELIKE))) { + this.activeListViewState.currentPage = 1 + } this.reload() this.reduceSelectionToFilter() this.saveDocumentListView() From ab7a499e8f5ad1252905d2688180d01db5ba985d Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 00:03:51 +0200 Subject: [PATCH 64/93] refactor filter reset --- .../document-list.component.html | 2 +- .../document-list/document-list.component.ts | 48 ++----------------- .../filter-editor/filter-editor.component.ts | 42 ++++++++++++++-- 3 files changed, 42 insertions(+), 50 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index f1f21b19c..45b6fad37 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -76,7 +76,7 @@
- +
diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index aa534e23e..020b38e78 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -2,6 +2,7 @@ import { Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from import { ActivatedRoute, Router } from '@angular/router'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Subscription } from 'rxjs'; +import { FilterRule } from 'src/app/data/filter-rule'; import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type'; import { PaperlessDocument } from 'src/app/data/paperless-document'; import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; @@ -38,7 +39,7 @@ export class DocumentListComponent implements OnInit, OnDestroy { displayMode = 'smallCards' // largeCards, smallCards, details - filterRulesModified: boolean = false + unmodifiedFilterRules: FilterRule[] = [] private consumptionFinishedSubscription: Subscription @@ -82,12 +83,12 @@ export class DocumentListComponent implements OnInit, OnDestroy { } this.list.activateSavedView(view) this.list.reload() - this.rulesChanged() + this.unmodifiedFilterRules = view.filter_rules }) } else { this.list.activateSavedView(null) this.list.reload() - this.rulesChanged() + this.unmodifiedFilterRules = [] } }) } @@ -101,7 +102,6 @@ export class DocumentListComponent implements OnInit, OnDestroy { loadViewConfig(view: PaperlessSavedView) { this.list.loadSavedView(view) this.list.reload() - this.rulesChanged() } saveViewConfig() { @@ -142,46 +142,6 @@ export class DocumentListComponent implements OnInit, OnDestroy { }) } - resetFilters(): void { - this.filterRulesModified = false - if (this.list.activeSavedViewId) { - this.savedViewService.getCached(this.list.activeSavedViewId).subscribe(viewUntouched => { - this.list.filterRules = viewUntouched.filter_rules - this.list.reload() - }) - } else { - this.list.filterRules = [] - this.list.reload() - } - } - - rulesChanged() { - let modified = false - if (this.list.activeSavedViewId == null) { - modified = this.list.filterRules.length > 0 // documents list is modified if it has any filters - } else { - // compare savedView current filters vs original - this.savedViewService.getCached(this.list.activeSavedViewId).subscribe(view => { - let filterRulesInitial = view.filter_rules - - if (this.list.filterRules.length !== filterRulesInitial.length) modified = true - else { - modified = this.list.filterRules.some(rule => { - return (filterRulesInitial.find(fri => fri.rule_type == rule.rule_type && fri.value == rule.value) == undefined) - }) - - if (!modified) { - // only check other direction if we havent already determined is modified - modified = filterRulesInitial.some(rule => { - this.list.filterRules.find(fr => fr.rule_type == rule.rule_type && fr.value == rule.value) == undefined - }) - } - } - }) - } - this.filterRulesModified = modified - } - toggleSelected(document: PaperlessDocument, event: MouseEvent): void { if (!event.shiftKey) this.list.toggleSelected(document) else this.list.selectRangeTo(document) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 16c342308..c1fd8536f 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -109,8 +109,23 @@ export class FilterEditorComponent implements OnInit, OnDestroy { dateAddedBefore: string dateAddedAfter: string + _unmodifiedFilterRules: FilterRule[] = [] + _filterRules: FilterRule[] = [] + + @Input() + set unmodifiedFilterRules(value: FilterRule[]) { + this._unmodifiedFilterRules = value + this.checkIfRulesHaveChanged() + } + + get unmodifiedFilterRules(): FilterRule[] { + return this._unmodifiedFilterRules + } + @Input() set filterRules (value: FilterRule[]) { + this._filterRules = value + this.documentTypeSelectionModel.clear(false) this.tagSelectionModel.clear(false) this.correspondentSelectionModel.clear(false) @@ -172,6 +187,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { break } }) + this.checkIfRulesHaveChanged() } get filterRules(): FilterRule[] { @@ -222,12 +238,27 @@ export class FilterEditorComponent implements OnInit, OnDestroy { @Output() filterRulesChange = new EventEmitter() - @Output() - reset = new EventEmitter() - - @Input() rulesModified: boolean = false + private checkIfRulesHaveChanged() { + let modified = false + if (this._unmodifiedFilterRules.length != this._filterRules.length) { + modified = true + } else { + modified = this._unmodifiedFilterRules.some(rule => { + return (this._filterRules.find(fri => fri.rule_type == rule.rule_type && fri.value == rule.value) == undefined) + }) + + if (!modified) { + // only check other direction if we havent already determined is modified + modified = this._filterRules.some(rule => { + this._unmodifiedFilterRules.find(fr => fr.rule_type == rule.rule_type && fr.value == rule.value) == undefined + }) + } + } + this.rulesModified = modified + } + updateRules() { this.filterRulesChange.next(this.filterRules) } @@ -265,7 +296,8 @@ export class FilterEditorComponent implements OnInit, OnDestroy { resetSelected() { this.textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT - this.reset.next() + this.filterRules = this._unmodifiedFilterRules + this.updateRules() } toggleTag(tagId: number) { From 3b83e9a43d57975efc9ca3de6158d4ec6137a49d Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 00:04:00 +0200 Subject: [PATCH 65/93] pycodestyle --- src/documents/views.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/documents/views.py b/src/documents/views.py index 71b01cdd6..d8fcca2a9 100755 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -332,15 +332,15 @@ class SearchResultSerializer(DocumentSerializer): def to_representation(self, instance): doc = Document.objects.get(id=instance['id']) - representation = super(SearchResultSerializer, self).to_representation(doc) - representation['__search_hit__'] = { + r = super(SearchResultSerializer, self).to_representation(doc) + r['__search_hit__'] = { "score": instance.score, "highlights": instance.highlights("content", text=doc.content) if doc else None, # NOQA: E501 "rank": instance.rank } - return representation + return r class UnifiedSearchViewSet(DocumentViewSet): @@ -356,7 +356,8 @@ class UnifiedSearchViewSet(DocumentViewSet): return DocumentSerializer def _is_search_request(self): - return "query" in self.request.query_params or "more_like_id" in self.request.query_params + return ("query" in self.request.query_params or + "more_like_id" in self.request.query_params) def filter_queryset(self, queryset): if self._is_search_request(): From 359b46c15bcc60d9a5781c3feda4bf39366faa3c Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 00:29:40 +0200 Subject: [PATCH 66/93] fixed the test cases --- src/documents/tests/test_admin.py | 2 +- src/documents/tests/test_api.py | 60 ++++++++----------------------- 2 files changed, 15 insertions(+), 47 deletions(-) diff --git a/src/documents/tests/test_admin.py b/src/documents/tests/test_admin.py index ce00a0698..fc1d7ffaf 100644 --- a/src/documents/tests/test_admin.py +++ b/src/documents/tests/test_admin.py @@ -27,7 +27,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase): doc.title = "new title" self.doc_admin.save_model(None, doc, None, None) self.assertEqual(Document.objects.get(id=doc.id).title, "new title") - self.assertEqual(self.get_document_from_index(doc)['title'], "new title") + self.assertEqual(self.get_document_from_index(doc)['id'], doc.id) def test_delete_model(self): doc = Document.objects.create(title="test") diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 853131db2..5c54a8d74 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -7,6 +7,7 @@ import tempfile import zipfile from unittest import mock +import pytest from django.conf import settings from django.contrib.auth.models import User from django.test import override_settings @@ -294,12 +295,6 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): results = response.data['results'] self.assertEqual(len(results), 0) - def test_search_no_query(self): - response = self.client.get("/api/search/") - results = response.data['results'] - - self.assertEqual(len(results), 0) - def test_search(self): d1=Document.objects.create(title="invoice", content="the thing i bought at a shop and paid with bank account", checksum="A", pk=1) d2=Document.objects.create(title="bank statement 1", content="things i paid for in august", pk=2, checksum="B") @@ -311,32 +306,24 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): index.update_document(writer, d1) index.update_document(writer, d2) index.update_document(writer, d3) - response = self.client.get("/api/search/?query=bank") + response = self.client.get("/api/documents/?query=bank") results = response.data['results'] self.assertEqual(response.data['count'], 3) - self.assertEqual(response.data['page'], 1) - self.assertEqual(response.data['page_count'], 1) self.assertEqual(len(results), 3) - response = self.client.get("/api/search/?query=september") + response = self.client.get("/api/documents/?query=september") results = response.data['results'] self.assertEqual(response.data['count'], 1) - self.assertEqual(response.data['page'], 1) - self.assertEqual(response.data['page_count'], 1) self.assertEqual(len(results), 1) - response = self.client.get("/api/search/?query=statement") + response = self.client.get("/api/documents/?query=statement") results = response.data['results'] self.assertEqual(response.data['count'], 2) - self.assertEqual(response.data['page'], 1) - self.assertEqual(response.data['page_count'], 1) self.assertEqual(len(results), 2) - response = self.client.get("/api/search/?query=sfegdfg") + response = self.client.get("/api/documents/?query=sfegdfg") results = response.data['results'] self.assertEqual(response.data['count'], 0) - self.assertEqual(response.data['page'], 0) - self.assertEqual(response.data['page_count'], 0) self.assertEqual(len(results), 0) def test_search_multi_page(self): @@ -349,53 +336,34 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): seen_ids = [] for i in range(1, 6): - response = self.client.get(f"/api/search/?query=content&page={i}") + response = self.client.get(f"/api/documents/?query=content&page={i}&page_size=10") results = response.data['results'] self.assertEqual(response.data['count'], 55) - self.assertEqual(response.data['page'], i) - self.assertEqual(response.data['page_count'], 6) self.assertEqual(len(results), 10) for result in results: self.assertNotIn(result['id'], seen_ids) seen_ids.append(result['id']) - response = self.client.get(f"/api/search/?query=content&page=6") + response = self.client.get(f"/api/documents/?query=content&page=6&page_size=10") results = response.data['results'] self.assertEqual(response.data['count'], 55) - self.assertEqual(response.data['page'], 6) - self.assertEqual(response.data['page_count'], 6) self.assertEqual(len(results), 5) for result in results: self.assertNotIn(result['id'], seen_ids) seen_ids.append(result['id']) - response = self.client.get(f"/api/search/?query=content&page=7") - results = response.data['results'] - self.assertEqual(response.data['count'], 55) - self.assertEqual(response.data['page'], 6) - self.assertEqual(response.data['page_count'], 6) - self.assertEqual(len(results), 5) - def test_search_invalid_page(self): with AsyncWriter(index.open_index()) as writer: for i in range(15): doc = Document.objects.create(checksum=str(i), pk=i+1, title=f"Document {i+1}", content="content") index.update_document(writer, doc) - first_page = self.client.get(f"/api/search/?query=content&page=1").data - second_page = self.client.get(f"/api/search/?query=content&page=2").data - should_be_first_page_1 = self.client.get(f"/api/search/?query=content&page=0").data - should_be_first_page_2 = self.client.get(f"/api/search/?query=content&page=dgfd").data - should_be_first_page_3 = self.client.get(f"/api/search/?query=content&page=").data - should_be_first_page_4 = self.client.get(f"/api/search/?query=content&page=-7868").data - - self.assertDictEqual(first_page, should_be_first_page_1) - self.assertDictEqual(first_page, should_be_first_page_2) - self.assertDictEqual(first_page, should_be_first_page_3) - self.assertDictEqual(first_page, should_be_first_page_4) - self.assertNotEqual(len(first_page['results']), len(second_page['results'])) + response = self.client.get(f"/api/documents/?query=content&page=0&page_size=10") + self.assertEqual(response.status_code, 404) + response = self.client.get(f"/api/documents/?query=content&page=3&page_size=10") + self.assertEqual(response.status_code, 404) @mock.patch("documents.index.autocomplete") def test_search_autocomplete(self, m): @@ -419,6 +387,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 10) + @pytest.mark.skip(reason="Not implemented yet") def test_search_spelling_correction(self): with AsyncWriter(index.open_index()) as writer: for i in range(55): @@ -444,7 +413,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): index.update_document(writer, d2) index.update_document(writer, d3) - response = self.client.get(f"/api/search/?more_like={d2.id}") + response = self.client.get(f"/api/documents/?more_like_id={d2.id}") self.assertEqual(response.status_code, 200) @@ -1375,8 +1344,7 @@ class TestApiAuth(APITestCase): self.assertEqual(self.client.get("/api/logs/").status_code, 401) self.assertEqual(self.client.get("/api/saved_views/").status_code, 401) - self.assertEqual(self.client.get("/api/search/").status_code, 401) - self.assertEqual(self.client.get("/api/search/auto_complete/").status_code, 401) + self.assertEqual(self.client.get("/api/search/autocomplete/").status_code, 401) self.assertEqual(self.client.get("/api/documents/bulk_edit/").status_code, 401) self.assertEqual(self.client.get("/api/documents/bulk_download/").status_code, 401) self.assertEqual(self.client.get("/api/documents/selection_data/").status_code, 401) From d13baab0a6478877116df2b298b00c654dc27277 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 01:19:07 +0200 Subject: [PATCH 67/93] more testing --- src/documents/index.py | 14 +++------- src/documents/tests/test_api.py | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index e17c82daa..6fdcff42f 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -82,11 +82,8 @@ def open_index(recreate=False): @contextmanager -def open_index_writer(ix=None, optimize=False): - if ix: - writer = AsyncWriter(ix) - else: - writer = AsyncWriter(open_index()) +def open_index_writer(optimize=False): + writer = AsyncWriter(open_index()) try: yield writer @@ -98,11 +95,8 @@ def open_index_writer(ix=None, optimize=False): @contextmanager -def open_index_searcher(ix=None): - if ix: - searcher = ix.searcher() - else: - searcher = open_index().searcher() +def open_index_searcher(): + searcher = open_index().searcher() try: yield searcher diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 5c54a8d74..cfde28e2d 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -423,6 +423,54 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): self.assertEqual(results[0]['id'], d3.id) self.assertEqual(results[1]['id'], d1.id) + def test_search_filtering(self): + t = Tag.objects.create(name="tag") + t2 = Tag.objects.create(name="tag2") + c = Correspondent.objects.create(name="correspondent") + dt = DocumentType.objects.create(name="type") + + d1 = Document.objects.create(checksum="1", correspondent=c, content="test") + d2 = Document.objects.create(checksum="2", document_type=dt, content="test") + d3 = Document.objects.create(checksum="3", content="test") + d3.tags.add(t) + d3.tags.add(t2) + d4 = Document.objects.create(checksum="4", created=datetime.datetime(2020, 7, 13), content="test") + d4.tags.add(t2) + d5 = Document.objects.create(checksum="5", added=datetime.datetime(2020, 7, 13), content="test") + d6 = Document.objects.create(checksum="6", content="test2") + + 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.assertCountEqual(search_query(""), [d1.id, d2.id, d3.id, d4.id, d5.id]) + self.assertCountEqual(search_query("&is_tagged=true"), [d3.id, d4.id]) + self.assertCountEqual(search_query("&is_tagged=false"), [d1.id, d2.id, d5.id]) + self.assertCountEqual(search_query("&correspondent__id=" + str(c.id)), [d1.id]) + self.assertCountEqual(search_query("&document_type__id=" + str(dt.id)), [d2.id]) + self.assertCountEqual(search_query("&correspondent__isnull"), [d2.id, d3.id, d4.id, d5.id]) + self.assertCountEqual(search_query("&document_type__isnull"), [d1.id, d3.id, d4.id, d5.id]) + self.assertCountEqual(search_query("&tags__id__all=" + str(t.id) + "," + str(t2.id)), [d3.id]) + self.assertCountEqual(search_query("&tags__id__all=" + str(t.id)), [d3.id]) + self.assertCountEqual(search_query("&tags__id__all=" + str(t2.id)), [d3.id, d4.id]) + + self.assertIn(d4.id, search_query("&created__date__lt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d"))) + self.assertNotIn(d4.id, search_query("&created__date__gt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d"))) + + self.assertNotIn(d4.id, search_query("&created__date__lt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d"))) + self.assertIn(d4.id, search_query("&created__date__gt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d"))) + + self.assertIn(d5.id, search_query("&added__date__lt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d"))) + self.assertNotIn(d5.id, search_query("&added__date__gt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d"))) + + 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_statistics(self): doc1 = Document.objects.create(title="none1", checksum="A") From c49471fb3b305196e031a1a2119dcbb9853a4d81 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 01:25:54 +0200 Subject: [PATCH 68/93] bugfix --- .../src/app/components/document-list/document-list.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index 020b38e78..13a827e97 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -114,6 +114,7 @@ export class DocumentListComponent implements OnInit, OnDestroy { } this.savedViewService.patch(savedView).subscribe(result => { this.toastService.showInfo($localize`View "${this.list.activeSavedViewTitle}" saved successfully.`) + this.unmodifiedFilterRules = this.list.filterRules }) } } From 1322aaf4da1fd06adee3c491d7bfd577abf6c1cd Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 20:41:08 +0200 Subject: [PATCH 69/93] add migration to fix null characters in document contents --- .../migrations/1015_remove_null_characters.py | 29 +++++++++++++++++++ .../test_migration_remove_null_characters.py | 15 ++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/documents/migrations/1015_remove_null_characters.py create mode 100644 src/documents/tests/test_migration_remove_null_characters.py diff --git a/src/documents/migrations/1015_remove_null_characters.py b/src/documents/migrations/1015_remove_null_characters.py new file mode 100644 index 000000000..2f7ee99b6 --- /dev/null +++ b/src/documents/migrations/1015_remove_null_characters.py @@ -0,0 +1,29 @@ +# Generated by Django 3.1.7 on 2021-04-04 18:28 +import logging + +from django.db import migrations + + +logger = logging.getLogger("paperless.migrations") + + +def remove_null_characters(apps, schema_editor): + Document = apps.get_model('documents', 'Document') + + for doc in Document.objects.all(): + content: str = doc.content + if '\0' in content: + logger.info(f"Removing null characters from document {doc}...") + doc.content = content.replace('\0', ' ') + doc.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '1014_auto_20210228_1614'), + ] + + operations = [ + migrations.RunPython(remove_null_characters, migrations.RunPython.noop) + ] diff --git a/src/documents/tests/test_migration_remove_null_characters.py b/src/documents/tests/test_migration_remove_null_characters.py new file mode 100644 index 000000000..ba6f18539 --- /dev/null +++ b/src/documents/tests/test_migration_remove_null_characters.py @@ -0,0 +1,15 @@ +from documents.tests.utils import DirectoriesMixin, TestMigrations + + +class TestMigrateNullCharacters(DirectoriesMixin, TestMigrations): + + migrate_from = '1014_auto_20210228_1614' + migrate_to = '1015_remove_null_characters' + + def setUpBeforeMigration(self, apps): + Document = apps.get_model("documents", "Document") + self.doc = Document.objects.create(content="aaa\0bbb") + + def testMimeTypesMigrated(self): + Document = self.apps.get_model('documents', 'Document') + self.assertNotIn("\0", Document.objects.get(id=self.doc.id).content) From ab47d03e1ad19d585d41cfb10baa499f7b26a0fa Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 4 Apr 2021 20:46:25 +0200 Subject: [PATCH 70/93] update messages --- src-ui/messages.xlf | 144 ++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 86 deletions(-) diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 880a32b1b..6a956512f 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -48,21 +48,21 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 @@ -146,77 +146,77 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Title src/app/components/document-list/document-list.component.html - 117 + 123 Document type src/app/components/document-list/document-list.component.html - 123 + 129 Created src/app/components/document-list/document-list.component.html - 129 + 135 Added src/app/components/document-list/document-list.component.html - 135 + 141 Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 @@ -912,48 +912,6 @@ 25 - - Search results - - src/app/components/search/search.component.html - 1 - - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - - - Search query: - - src/app/components/search/search.component.html - 9 - - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - Paperless-ng @@ -1039,81 +997,95 @@ 106 - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 + + + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 @@ -1233,7 +1205,7 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 From 808b507b0f0bc2ef30a276f23e3a1301892da52f Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 00:16:50 +0200 Subject: [PATCH 71/93] fix migration --- .../{1015_auto_20210317_1351.py => 1016_auto_20210317_1351.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/documents/migrations/{1015_auto_20210317_1351.py => 1016_auto_20210317_1351.py} (95%) diff --git a/src/documents/migrations/1015_auto_20210317_1351.py b/src/documents/migrations/1016_auto_20210317_1351.py similarity index 95% rename from src/documents/migrations/1015_auto_20210317_1351.py rename to src/documents/migrations/1016_auto_20210317_1351.py index b6dca444c..733c1bb33 100644 --- a/src/documents/migrations/1015_auto_20210317_1351.py +++ b/src/documents/migrations/1016_auto_20210317_1351.py @@ -6,7 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('documents', '1014_auto_20210228_1614'), + ('documents', '1015_remove_null_characters'), ] operations = [ From 4b281ca89d70d67f4027b77961d00f2b8472164f Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 00:22:11 +0200 Subject: [PATCH 72/93] logging before executing pre and post consume scripts --- src/documents/consumer.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/documents/consumer.py b/src/documents/consumer.py index 3d7d98198..8c888259f 100755 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -115,6 +115,9 @@ class Consumer(LoggingMixin): f"Configured pre-consume script " f"{settings.PRE_CONSUME_SCRIPT} does not exist.") + self.log("info", + f"Executing pre-consume script {settings.PRE_CONSUME_SCRIPT}") + try: Popen((settings.PRE_CONSUME_SCRIPT, self.path)).wait() except Exception as e: @@ -135,6 +138,11 @@ class Consumer(LoggingMixin): f"{settings.POST_CONSUME_SCRIPT} does not exist." ) + self.log( + "info", + f"Executing post-consume script {settings.POST_CONSUME_SCRIPT}" + ) + try: Popen(( settings.POST_CONSUME_SCRIPT, From 8960b0300f199c2e5fbbdc0a863990c365cff021 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 00:36:44 +0200 Subject: [PATCH 73/93] changelog and version bump --- docs/changelog.rst | 22 +++++++++++++++++++++ src-ui/src/environments/environment.prod.ts | 2 +- src/paperless/version.py | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 7010350a8..ba2bddc25 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,28 @@ Changelog ********* +paperless-ng 1.4.0 +################## + +* Docker images now use tesseract 4.1.1, which should fix a series of issues with OCR. + +* The full text search now displays results using the default document list. This enables + selection, filtering and bulk edit on search results. + +* Changes + + * New URL pattern for accessing documents by ASN directly (http:///asn/123) + + * Added logging when executing pre- and post-consume scripts. + + * Better error logging during document consumption. + + * Updated python dependencies. + +* Fixes + + * Fixed an issue with null characters in the document content. + paperless-ng 1.3.2 ################## diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index acc5843f8..63789a9d4 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -3,7 +3,7 @@ export const environment = { apiBaseUrl: "/api/", apiVersion: "2", appTitle: "Paperless-ng", - version: "1.3.2", + version: "1.4.0", webSocketHost: window.location.host, webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:") }; diff --git a/src/paperless/version.py b/src/paperless/version.py index 183d98d3f..532acc3df 100644 --- a/src/paperless/version.py +++ b/src/paperless/version.py @@ -1 +1 @@ -__version__ = (1, 3, 2) +__version__ = (1, 4, 0) From ec4ec41552c6925d247602ac34d6196742be52a2 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 4 Apr 2021 17:05:27 -0700 Subject: [PATCH 74/93] Add back plus button which retains filter text --- .../common/input/select/select.component.html | 49 ++++++++++++------- .../common/input/select/select.component.ts | 25 +++++++++- .../common/input/tags/tags.component.html | 15 +++++- .../common/input/tags/tags.component.ts | 19 ++++++- src-ui/src/styles.scss | 2 + 5 files changed, 89 insertions(+), 21 deletions(-) diff --git a/src-ui/src/app/components/common/input/select/select.component.html b/src-ui/src/app/components/common/input/select/select.component.html index b5fb6f2ed..1bcdeda84 100644 --- a/src-ui/src/app/components/common/input/select/select.component.html +++ b/src-ui/src/app/components/common/input/select/select.component.html @@ -1,30 +1,45 @@
-
- - - - + + (change)="onChange(value)" + (search)="onSearch($event)" + (focus)="clearLastSearchTerm()" + (clear)="clearLastSearchTerm()" + (blur)="onBlur()"> - -
+ + + + +
+ +
+
{{hint}} Suggestions:  diff --git a/src-ui/src/app/components/common/input/select/select.component.ts b/src-ui/src/app/components/common/input/select/select.component.ts index 878254318..921e3606c 100644 --- a/src-ui/src/app/components/common/input/select/select.component.ts +++ b/src-ui/src/app/components/common/input/select/select.component.ts @@ -39,6 +39,8 @@ export class SelectComponent extends AbstractInputComponent { public addItemRef: (name) => void + private _lastSearchTerm: string + get allowCreateNew(): boolean { return this.createNew.observers.length > 0 } @@ -52,7 +54,28 @@ export class SelectComponent extends AbstractInputComponent { } addItem(name: string) { - this.createNew.next(name) + if (name) this.createNew.next(name) + else this.createNew.next(this._lastSearchTerm) + this.clearLastSearchTerm() + } + + clickNew() { + this.createNew.next(this._lastSearchTerm) + this.clearLastSearchTerm() + } + + clearLastSearchTerm() { + this._lastSearchTerm = null + } + + onSearch($event) { + this._lastSearchTerm = $event.term + } + + onBlur() { + setTimeout(() => { + this.clearLastSearchTerm() + }, 3000); } } diff --git a/src-ui/src/app/components/common/input/tags/tags.component.html b/src-ui/src/app/components/common/input/tags/tags.component.html index b8d4f074e..72c2cf1a5 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.html +++ b/src-ui/src/app/components/common/input/tags/tags.component.html @@ -1,7 +1,7 @@
-
+
+ (search)="onSearch($event)" + (focus)="clearLastSearchTerm()" + (clear)="clearLastSearchTerm()" + (blur)="onBlur()"> @@ -26,6 +29,14 @@
+ +
+ +
{{hint}} diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index 2ab6a02b5..8db444ba3 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -56,9 +56,11 @@ export class TagsComponent implements OnInit, ControlValueAccessor { value: number[] tags: PaperlessTag[] - + public createTagRef: (name) => void + private _lastSearchTerm: string + getTag(id) { if (this.tags) { return this.tags.find(tag => tag.id == id) @@ -81,6 +83,7 @@ export class TagsComponent implements OnInit, ControlValueAccessor { var modal = this.modalService.open(TagEditDialogComponent, {backdrop: 'static'}) modal.componentInstance.dialogMode = 'create' if (name) modal.componentInstance.object = { name: name } + else if (this._lastSearchTerm) modal.componentInstance.object = { name: this._lastSearchTerm } modal.componentInstance.success.subscribe(newTag => { this.tagService.listAll().subscribe(tags => { this.tags = tags.results @@ -103,4 +106,18 @@ export class TagsComponent implements OnInit, ControlValueAccessor { this.onChange(this.value) } + clearLastSearchTerm() { + this._lastSearchTerm = null + } + + onSearch($event) { + this._lastSearchTerm = $event.term + } + + onBlur() { + setTimeout(() => { + this.clearLastSearchTerm() + }, 3000); + } + } diff --git a/src-ui/src/styles.scss b/src-ui/src/styles.scss index 8c48dcddc..34f575a05 100644 --- a/src-ui/src/styles.scss +++ b/src-ui/src/styles.scss @@ -77,6 +77,8 @@ body { .ng-select-container { height: 100%; + border-top-right-radius: 0; + border-bottom-right-radius: 0; .ng-value-container .ng-input { top: 10px; From 8eabf8c77ab91dd89abc22e710364a2f5dcabb02 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:57:16 -0700 Subject: [PATCH 75/93] Refactor unneeded ngIf --- .../common/input/select/select.component.html | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/src-ui/src/app/components/common/input/select/select.component.html b/src-ui/src/app/components/common/input/select/select.component.html index 1bcdeda84..0ae3009ea 100644 --- a/src-ui/src/app/components/common/input/select/select.component.html +++ b/src-ui/src/app/components/common/input/select/select.component.html @@ -1,13 +1,13 @@
- - - - -
- - {{_moreLikeDoc?.title}} +
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index c1fd8536f..a4463a64b 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -159,6 +159,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { this.textFilterTarget = TEXT_FILTER_TARGET_FULLTEXT_MORELIKE this.documentService.get(this._moreLikeId).subscribe(result => { this._moreLikeDoc = result + this._textFilter = result.title }) break case FILTER_CREATED_AFTER: @@ -325,6 +326,9 @@ export class FilterEditorComponent implements OnInit, OnDestroy { } changeTextFilterTarget(target) { + if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE && target != TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) { + this._textFilter = "" + } this.textFilterTarget = target this.updateRules() } From 1d27a3a14be5084868de598d5c5014ad18fa0c2e Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:33:04 +0200 Subject: [PATCH 77/93] fixed the write permission check --- src/paperless/checks.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/paperless/checks.py b/src/paperless/checks.py index 0d11d8a90..1b19f1a72 100644 --- a/src/paperless/checks.py +++ b/src/paperless/checks.py @@ -23,9 +23,12 @@ def path_check(var, directory): exists_hint.format(directory) )) else: - test_file = os.path.join(directory, '__paperless_write_test__') + test_file = os.path.join( + directory, f'__paperless_write_test_{os.getpid()}__' + ) try: - open(test_file, 'w') + with open(test_file, 'w'): + pass except PermissionError: messages.append(Error( writeable_message.format(var), @@ -33,8 +36,9 @@ def path_check(var, directory): f'\n{stat.filemode(os.stat(directory).st_mode)} ' f'{directory}\n') )) - else: - os.remove(test_file) + finally: + if os.path.isfile(test_file): + os.remove(test_file) return messages From ca2bf962e9c48992b78eb52a3bae4482c0e03393 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:33:17 +0200 Subject: [PATCH 78/93] force update of search index if out of date --- docker/docker-entrypoint.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 5919b14aa..cf6129438 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -68,6 +68,17 @@ migrations() { } +search_index() { + index_version=1 + index_version_file=/usr/src/paperless/data/.index_version + + if [[ (! -f "$index_version_file") || $(< $index_version_file) != "$index_version" ]]; then + echo "Search index out of date. Updating..." + sudo -HEu paperless python3 manage.py document_index reindex + echo $index_version | sudo -HEu paperless tee $index_version_file >/dev/null + fi +} + initialize() { map_uidgid @@ -87,6 +98,7 @@ initialize() { migrations + search_index } install_languages() { From 1fbd3935ea3a660375f74298cb57050809778236 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:42:41 +0200 Subject: [PATCH 79/93] focus text filter input automatically --- .../filter-editor/filter-editor.component.html | 2 +- .../document-list/filter-editor/filter-editor.component.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html index 1fbe53d67..c61f36c3f 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8,7 +8,7 @@
- +
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index a4463a64b..777c92e07 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output, OnInit, OnDestroy } from '@angular/core'; +import { Component, EventEmitter, Input, Output, OnInit, OnDestroy, ViewChild, ElementRef } from '@angular/core'; import { PaperlessTag } from 'src/app/data/paperless-tag'; import { PaperlessCorrespondent } from 'src/app/data/paperless-correspondent'; import { PaperlessDocumentType } from 'src/app/data/paperless-document-type'; @@ -72,6 +72,9 @@ export class FilterEditorComponent implements OnInit, OnDestroy { private documentService: DocumentService ) { } + @ViewChild("textFilterInput") + textFilterInput: ElementRef + tags: PaperlessTag[] = [] correspondents: PaperlessCorrespondent[] = [] documentTypes: PaperlessDocumentType[] = [] @@ -330,6 +333,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy { this._textFilter = "" } this.textFilterTarget = target + this.textFilterInput.nativeElement.focus() this.updateRules() } } From 2f95dfc0e7beb24539c9a992bedd795df0f4039d Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:44:14 +0200 Subject: [PATCH 80/93] New Crowdin updates (#855) --- src-ui/src/locale/messages.cs_CZ.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.de_DE.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.en_GB.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.es_ES.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.fr_FR.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.hu_HU.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.it_IT.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.nl_NL.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.pt_BR.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.pt_PT.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.ro_RO.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.ru_RU.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.xh_ZA.xlf | 190 +++++++++++++-------------- src-ui/src/locale/messages.zh_CN.xlf | 190 +++++++++++++-------------- 14 files changed, 1330 insertions(+), 1330 deletions(-) diff --git a/src-ui/src/locale/messages.cs_CZ.xlf b/src-ui/src/locale/messages.cs_CZ.xlf index c24654569..335046a73 100644 --- a/src-ui/src/locale/messages.cs_CZ.xlf +++ b/src-ui/src/locale/messages.cs_CZ.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Dokumenty
@@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" saved successfully. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 View "" created successfully. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Title @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Document type @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Created @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Added @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirm delete @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Do you really want to delete document ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 The files for this document will be deleted permanently. This operation cannot be undone. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Delete document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Error deleting document: @@ -1042,54 +1042,6 @@ Edit document type - - Search results - - src/app/components/search/search.component.html - 1 - - Search results - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Invalid search query: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Showing documents similar to - - - Search query: - - src/app/components/search/search.component.html - 9 - - Search query: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Did you mean ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - Paperless-ng @@ -1187,35 +1139,11 @@ Close all - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Title - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Title & content - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Without correspondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Type: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Without document type @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Tag: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Without any tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Title: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Title + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Title & content + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Score: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Invalid date. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.de_DE.xlf b/src-ui/src/locale/messages.de_DE.xlf index 1d7a3e918..9047251ef 100644 --- a/src-ui/src/locale/messages.de_DE.xlf +++ b/src-ui/src/locale/messages.de_DE.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Dokumente @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Ansicht "" erfolgreich gespeichert. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Ansicht "" erfolgreich erstellt. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Korrespondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Titel @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Dokumenttyp @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Ausgestellt @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Hinzugefügt @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Löschen bestätigen @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Möchten Sie das Dokument "" wirklich löschen? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Die Dateien dieses Dokuments werden permanent gelöscht. Diese Aktion kann nicht rückgängig gemacht werden. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Dokument löschen @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Fehler beim Löschen des Dokuments: @@ -1042,54 +1042,6 @@ Dokumenttyp bearbeiten - - Search results - - src/app/components/search/search.component.html - 1 - - Suchergebnisse - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Ungültige Suchanfrage: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Zeige ähnliche Dokumente zu - - - Search query: - - src/app/components/search/search.component.html - 9 - - Suchanfrage: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Meinten Sie ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Keine Ergebnisse} =1 {Ein Ergebnis} other { Ergebnisse}} - Paperless-ng @@ -1187,35 +1139,11 @@ Alle schließen - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Titel - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titel & Inhalt - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Korrespondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Ohne Korrespondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Typ: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Ohne Dokumenttyp @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Tag: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Ohne Tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Titel: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Titel + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titel & Inhalt + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Erweiterte Suche + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + Ähnlich zu + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Relevanz: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Ausgestellt: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Hinzugefügt: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Geändert: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Ungültiges Datum. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Dokument mit ASN wird gesucht + Yes diff --git a/src-ui/src/locale/messages.en_GB.xlf b/src-ui/src/locale/messages.en_GB.xlf index 060411de2..a8d967b9e 100644 --- a/src-ui/src/locale/messages.en_GB.xlf +++ b/src-ui/src/locale/messages.en_GB.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documents @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" saved successfully. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 View "" created successfully. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Title @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Document type @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Created @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Added @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirm delete @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Do you really want to delete document ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 The files for this document will be deleted permanently. This operation cannot be undone. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Delete document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Error deleting document: @@ -1042,54 +1042,6 @@ Edit document type - - Search results - - src/app/components/search/search.component.html - 1 - - Search results - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Invalid search query: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Showing documents similar to - - - Search query: - - src/app/components/search/search.component.html - 9 - - Search query: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Did you mean ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - Paperless-ng @@ -1187,35 +1139,11 @@ Close all - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Title - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Title & content - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Without correspondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Type: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Without document type @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Tag: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Without any tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Title: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Title + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Title & content + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Score: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Invalid date. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.es_ES.xlf b/src-ui/src/locale/messages.es_ES.xlf index b743b8a83..f0ba5e8a6 100644 --- a/src-ui/src/locale/messages.es_ES.xlf +++ b/src-ui/src/locale/messages.es_ES.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documentos @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Ver "" guardado satisfactoriamente. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Ver "" creado satisfactoriamente. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 NSA @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Tipo de documento @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Título @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Tipo de documento @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Creado @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Aggregado @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirmar borrado @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 ¿Estás seguro de querer borrar el documento ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Los archivos para este documento serán borrados permanentemente. Esta operación no se puede deshacer. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Borrar documento @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Error borrando el documento: @@ -1042,54 +1042,6 @@ Editar tipo de documento - - Search results - - src/app/components/search/search.component.html - 1 - - Resultados de la busqueda - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Cadena de búsqueda no valida: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Mostrando documentos similares a - - - Search query: - - src/app/components/search/search.component.html - 9 - - Cadena de búsqueda: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - ¿Quizás quisiste decir ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Sin resultados} =1 {Un resultado} other { resultados}} - Paperless-ng @@ -1187,35 +1139,11 @@ Cerrar todos - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Título - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titulo y contenido - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - NSF - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Tipo: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Sin tipo de documento @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Tipo: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Sin tipo de documento @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Etiqueta: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Sin ninguna etiqueta @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Título: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Título + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titulo y contenido + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + NSF + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Puntuación: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Fecha no válida. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.fr_FR.xlf b/src-ui/src/locale/messages.fr_FR.xlf index d3103a6ad..6d325e6d4 100644 --- a/src-ui/src/locale/messages.fr_FR.xlf +++ b/src-ui/src/locale/messages.fr_FR.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documents @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Vue "" enregistrée avec succès. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Vue "" créée avec succès. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 NSA @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondant @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Titre @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Type de document @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Date de création @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Date d'ajout @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirmer la suppression @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Voulez-vous vraiment supprimer le document "" ? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Les fichiers liés à ce document seront supprimés définitivement. Cette action est irréversible. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Supprimer le document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Une erreur s'est produite lors de la suppression du document : @@ -1042,54 +1042,6 @@ Éditer le type de document - - Search results - - src/app/components/search/search.component.html - 1 - - Résultats de la recherche - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Requête de recherche invalide : - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Présentation des documents similaires à - - - Search query: - - src/app/components/search/search.component.html - 9 - - Requête de recherche : - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Vouliez-vous dire "" ? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Aucun résultat} =1 {Un résultat} other { résultats}} - Paperless-ng @@ -1187,35 +1139,11 @@ Fermer tout - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Titre - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titre & contenu - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - NSA - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondant : @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Sans correspondant @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Type : @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Sans type de document @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Étiquette : @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Sans étiquette @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Titre : @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 NSA : + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Titre + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titre & contenu + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + NSA + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Score : + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Date incorrecte. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.hu_HU.xlf b/src-ui/src/locale/messages.hu_HU.xlf index 218e4fa98..57a95252b 100644 --- a/src-ui/src/locale/messages.hu_HU.xlf +++ b/src-ui/src/locale/messages.hu_HU.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Dokumentumok @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" saved successfully. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Nézet "" sikeresen létrehozva. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Partner @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Cím @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Dokumentum típus @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Létrehozva @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Hozzáadva @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Törlés megerősítése @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Do you really want to delete document ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 A dokumentumhoz tartozó fájlok véglegesen törlésre kerülnek. Ez a művelet nem visszafordítható. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Dokumentum törlése @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Error deleting document: @@ -1042,54 +1042,6 @@ Dokumentum típus szerkesztése - - Search results - - src/app/components/search/search.component.html - 1 - - Találatok - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Érvénytelen keresési kifejezés: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Showing documents similar to - - - Search query: - - src/app/components/search/search.component.html - 9 - - Keresés: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Úgy értetted, hogy ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - Paperless-ng @@ -1187,35 +1139,11 @@ Összes bezárása - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Cím - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Title & content - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Partner: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Without correspondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Típus: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Without document type @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Cimke: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Without any tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Title: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Cím + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Title & content + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Pont: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Invalid date. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.it_IT.xlf b/src-ui/src/locale/messages.it_IT.xlf index c41ed083d..51ad7370f 100644 --- a/src-ui/src/locale/messages.it_IT.xlf +++ b/src-ui/src/locale/messages.it_IT.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documenti @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 La vista "" è stata salvata. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 La vista "" è stata creata. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Corrispondente @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Titolo @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Tipo di documento @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Creato @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Aggiunto @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Conferma eliminazione @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Vuoi eliminare il documento ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 I file di questo documento saranno eliminati permanentemente. Questa operazione è irreversibile. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Elimina documento @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Errore nell'eliminazione del documento: @@ -1042,54 +1042,6 @@ Modifica tipo di documento - - Search results - - src/app/components/search/search.component.html - 1 - - Risultati della ricerca - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Query di ricerca non valida: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Documenti simili a - - - Search query: - - src/app/components/search/search.component.html - 9 - - Query di ricerca: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Forse intendevi ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Nessun risultato} =1 {Un risultato} other { risultati}} - Paperless-ng @@ -1187,35 +1139,11 @@ Chiudi tutti - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Titolo - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titolo & contenuto - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Corrispondente: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Senza corrispondente @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Tipo: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Senza tipo di documento @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Tag: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Senza alcun tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Titolo: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Titolo + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titolo & contenuto + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Ricerca avanzata + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + Più come + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Punteggio: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Creato il: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Aggiunto il: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modificato il: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Data non valida. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Cercando documento con asn + Yes diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index c187fc531..cf67a9c80 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documenten @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" met succes opgeslagen. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 View "" met succes gemaakt. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Titel @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Documenttype @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Aangemaakt @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Toegevoegd @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Bevestig het verwijderen @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Wilt u het document echt verwijderen ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 De bestanden voor dit document worden definitief verwijderd. Deze bewerking kan niet ongedaan worden gemaakt. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Verwijder document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Fout bij het verwijderen van het document: @@ -1042,54 +1042,6 @@ Documenttype bewerken - - Search results - - src/app/components/search/search.component.html - 1 - - Zoekresultaten - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Ongeldige zoekopdracht: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Toon documenten die lijken op - - - Search query: - - src/app/components/search/search.component.html - 9 - - Zoekopdracht: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Bedoelde u ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Geen resultaten} =1 {Eén resultaat} other { resultaten}} - Paperless-ng @@ -1187,35 +1139,11 @@ Alles sluiten - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Titel - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titel en inhoud - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Zonder correspondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Type: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Zonder documenttype @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Etiket: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Zonder enig etiket @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Titel: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Titel + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titel en inhoud + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Score: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Ongeldige datum. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.pt_BR.xlf b/src-ui/src/locale/messages.pt_BR.xlf index c95ae9670..946173aad 100644 --- a/src-ui/src/locale/messages.pt_BR.xlf +++ b/src-ui/src/locale/messages.pt_BR.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documentos @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Visualização "" salva com sucesso. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Visualização "" criada com sucesso. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 NSA @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondente @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Título @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Tipo de Documento @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Criado @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Adicionado @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirmar exclusão @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Você realmente deseja excluir o documento ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Excluir documento @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Erro ao excluir documento: @@ -1042,54 +1042,6 @@ Editar tipo de documento - - Search results - - src/app/components/search/search.component.html - 1 - - Resultados da busca - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Termo de pesquisa inválido: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Exibindo documentos similares a - - - Search query: - - src/app/components/search/search.component.html - 9 - - Termo de pesquisa: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Você quis dizer ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Sem resultados} =1 {Um resultado} other { resultados}} - Paperless-ng @@ -1187,35 +1139,11 @@ Fechar todos - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Título - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Título & conteúdo - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - NSA - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondente: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Sem correspondente @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Tipo: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Sem tipo de documento @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Etiqueta: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Sem etiquetas @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Título: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Título + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Título & conteúdo + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + NSA + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Nota: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Data inválida. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.pt_PT.xlf b/src-ui/src/locale/messages.pt_PT.xlf index 1059654f9..2c4d6d543 100644 --- a/src-ui/src/locale/messages.pt_PT.xlf +++ b/src-ui/src/locale/messages.pt_PT.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documentos @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Visualização "" salva com sucesso. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Visualização "" criada com sucesso. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 NSA @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondente @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Título @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Tipo de Documento @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Criado @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Adicionado @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirmar exclusão @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Você realmente deseja excluir o documento ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Excluir documento @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Erro ao excluir documento: @@ -1042,54 +1042,6 @@ Editar tipo de documento - - Search results - - src/app/components/search/search.component.html - 1 - - Resultados da pesquisa - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Termo de pesquisa inválido: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Mostrar documentos similares a - - - Search query: - - src/app/components/search/search.component.html - 9 - - Termo de pesquisa: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Será que quer dizer ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, one {} =0 {Sem resultados} =1 {Um resultado} other { resultados}} - Paperless-ng @@ -1187,35 +1139,11 @@ Fechar todos - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Título - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Título & conteúdo - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - NSA - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondente: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Sem correspondente @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Tipo: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Sem tipo de documento @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Etiqueta: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Sem etiquetas @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Título: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 NSA: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Título + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Título & conteúdo + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + NSA + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Pesquisa avançada + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + Mais semelhante + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Pontuação: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Criado em: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Adicionado a: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modificado a: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Data inválida. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + À procura do documento com nsa + Yes diff --git a/src-ui/src/locale/messages.ro_RO.xlf b/src-ui/src/locale/messages.ro_RO.xlf index 4f45f3625..0eb8c72ac 100644 --- a/src-ui/src/locale/messages.ro_RO.xlf +++ b/src-ui/src/locale/messages.ro_RO.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Documente @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Vizualizarea "" a fost salvată. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Vizualizarea "" a fost creată. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 Aviz prealabil de expediție @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Corespondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Titlu @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Tipul documentului @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Creat @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Adăugat @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirmă ștergerea @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Sunteţi sigur că doriţi să ştergeţi documentul ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Fișierele pentru acest document vor fi șterse permanent. Operațiunea este ireversibila. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Șterge document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Eroare la ștergerea documentului: @@ -1042,54 +1042,6 @@ Modifică un tip de document - - Search results - - src/app/components/search/search.component.html - 1 - - Rezultatele căutarii - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Interogare invalidă: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Documente similare cu - - - Search query: - - src/app/components/search/search.component.html - 9 - - Interogare: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Ați vrut să scrieți ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Niciun rezultat} =1 {Un rezultat} other { rezultate}} - Paperless-ng @@ -1187,35 +1139,11 @@ Închide tot - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Titlu - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Titlu si conținut - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - Aviz prealabil de expediție - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Corespondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Fără corespondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Tip: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Fară tip @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Eticheta: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Fară etichete @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Titlu: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 Aviz prealabil de expediție: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Titlu + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Titlu si conținut + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + Aviz prealabil de expediție + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Scor: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Data invalidă. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes diff --git a/src-ui/src/locale/messages.ru_RU.xlf b/src-ui/src/locale/messages.ru_RU.xlf index c2736233c..c0b9f8eff 100644 --- a/src-ui/src/locale/messages.ru_RU.xlf +++ b/src-ui/src/locale/messages.ru_RU.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 Документы @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 Представление "" успешно сохранено. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 Представление "" успешно создано. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 Архивный номер @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Корреспондент @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Название @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Тип документа @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Создано @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Добавлено @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Подтвердите удаление @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Вы действительно хотите удалить документ ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 Файлы из этого документа будут удалены незамедлительно. Это операцию нельзя отменить. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Удалить документ @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Ошибка удаления документа: @@ -1042,54 +1042,6 @@ Редактировать тип документа - - Search results - - src/app/components/search/search.component.html - 1 - - Результаты поиска - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Неверный поисковой запрос: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Показываю документы похожие на - - - Search query: - - src/app/components/search/search.component.html - 9 - - Поисковый запрос: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Может вы имели ввиду ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {Нет результатов} =1 {Один результат} other {Результаты: }} - Paperless-ng @@ -1187,35 +1139,11 @@ Закрыть всё - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Заголовок - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Название и содержимое - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - АН - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Корреспондент: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Без корреспондента @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Тип: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Без типа документа @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Тег: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Без тегов @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Название: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 Архивный номер: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Заголовок + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Название и содержимое + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + АН + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Расширенный поиск + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + Больше похожих + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Оценка: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Создано: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Добавлено: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Изменено: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Неверная дата. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Поиск документа с asn + Yes diff --git a/src-ui/src/locale/messages.xh_ZA.xlf b/src-ui/src/locale/messages.xh_ZA.xlf index 2d759ed8a..d9f1f631c 100644 --- a/src-ui/src/locale/messages.xh_ZA.xlf +++ b/src-ui/src/locale/messages.xh_ZA.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 crwdns2850:0crwdne2850:0 @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 crwdns2852:0crwdne2852:0 @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 crwdns2854:0crwdne2854:0 @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 crwdns2878:0crwdne2878:0 @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 crwdns2880:0crwdne2880:0 @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 crwdns2882:0crwdne2882:0 @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 crwdns2884:0crwdne2884:0 @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 crwdns2886:0crwdne2886:0 @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 crwdns2888:0crwdne2888:0 @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 crwdns2890:0crwdne2890:0 @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 crwdns2892:0crwdne2892:0 @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 crwdns2894:0crwdne2894:0 @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 crwdns2896:0crwdne2896:0 @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 crwdns2898:0crwdne2898:0 @@ -1042,54 +1042,6 @@ crwdns3096:0crwdne3096:0 - - Search results - - src/app/components/search/search.component.html - 1 - - crwdns3098:0crwdne3098:0 - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - crwdns3100:0{{errorMessage}}crwdne3100:0 - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - crwdns3406:0{{more_like}}crwdnd3406:0{{more_like_doc?.original_file_name}}crwdnd3406:0{{more_like_doc?.original_file_name}}crwdne3406:0 - - - Search query: - - src/app/components/search/search.component.html - 9 - - crwdns3104:0{{query}}crwdnd3104:0{{query}}crwdne3104:0 - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - crwdns3106:0[routerLink]crwdnd3106:0{{correctedQuery}}crwdnd3106:0{{correctedQuery}}crwdne3106:0 - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - crwdns3108:0VAR_PLURAL={VAR_PLURAL}crwdne3108:0 - Paperless-ng @@ -1187,35 +1139,11 @@ crwdns3132:0crwdne3132:0 - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - crwdns3134:0crwdne3134:0 - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - crwdns3136:0crwdne3136:0 - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - crwdns3354:0crwdne3354:0 - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 crwdns3138:0crwdne3138:0 @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 crwdns3140:0crwdne3140:0 @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 crwdns3142:0crwdne3142:0 @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 crwdns3144:0crwdne3144:0 @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 crwdns3146:0crwdne3146:0 @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 crwdns3148:0crwdne3148:0 @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 crwdns3150:0crwdne3150:0 @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 crwdns3416:0crwdne3416:0 + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + crwdns3134:0crwdne3134:0 + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + crwdns3136:0crwdne3136:0 + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + crwdns3354:0crwdne3354:0 + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + crwdns3434:0crwdne3434:0 + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + crwdns3436:0crwdne3436:0 + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 crwdns3186:0crwdne3186:0 + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + crwdns3426:0{{ document.created | customDate}}crwdne3426:0 + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + crwdns3428:0{{ document.added | customDate}}crwdne3428:0 + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + crwdns3430:0{{ document.modified | customDate}}crwdne3430:0 + Error executing bulk operation: @@ -1857,6 +1849,14 @@ crwdns3298:0crwdne3298:0 + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + crwdns3432:0{{asn}}crwdne3432:0 + Yes diff --git a/src-ui/src/locale/messages.zh_CN.xlf b/src-ui/src/locale/messages.zh_CN.xlf index a40acabe4..5f21489b4 100644 --- a/src-ui/src/locale/messages.zh_CN.xlf +++ b/src-ui/src/locale/messages.zh_CN.xlf @@ -54,7 +54,7 @@ Documents src/app/components/document-list/document-list.component.ts - 49 + 51 文件 @@ -62,7 +62,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 115 + 116 View "" saved successfully. @@ -70,7 +70,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 136 + 138 View "" created successfully. @@ -166,7 +166,7 @@ ASN src/app/components/document-list/document-list.component.html - 105 + 111 ASN @@ -174,7 +174,7 @@ Correspondent src/app/components/document-list/document-list.component.html - 111 + 117 Correspondent @@ -182,7 +182,7 @@ Title src/app/components/document-list/document-list.component.html - 117 + 123 Title @@ -190,7 +190,7 @@ Document type src/app/components/document-list/document-list.component.html - 123 + 129 Document type @@ -198,7 +198,7 @@ Created src/app/components/document-list/document-list.component.html - 129 + 135 Created @@ -206,7 +206,7 @@ Added src/app/components/document-list/document-list.component.html - 135 + 141 Added @@ -214,7 +214,7 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 203 + 204 Confirm delete @@ -222,7 +222,7 @@ Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 204 + 205 Do you really want to delete document ""? @@ -230,7 +230,7 @@ The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 205 + 206 The files for this document will be deleted permanently. This operation cannot be undone. @@ -238,7 +238,7 @@ Delete document src/app/components/document-detail/document-detail.component.ts - 207 + 208 Delete document @@ -246,7 +246,7 @@ Error deleting document: src/app/components/document-detail/document-detail.component.ts - 214 + 215 Error deleting document: @@ -1042,54 +1042,6 @@ Edit document type - - Search results - - src/app/components/search/search.component.html - 1 - - Search results - - - Invalid search query: - - src/app/components/search/search.component.html - 4 - - Invalid search query: - - - Showing documents similar to - - src/app/components/search/search.component.html - 6 - - Showing documents similar to - - - Search query: - - src/app/components/search/search.component.html - 9 - - Search query: - - - Did you mean ""? - - src/app/components/search/search.component.html - 11 - - Did you mean ""? - - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - - src/app/components/search/search.component.html - 16 - - {VAR_PLURAL, plural, =0 {No results} =1 {One result} other { results}} - Paperless-ng @@ -1187,35 +1139,11 @@ Close all - - Title - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 77 - - Title - - - Title & content - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 78 - - Title & content - - - ASN - - src/app/components/document-list/filter-editor/filter-editor.component.ts - 79 - - ASN - Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 33 + 37 Correspondent: @@ -1223,7 +1151,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 35 + 39 Without correspondent @@ -1231,7 +1159,7 @@ Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 40 + 44 Type: @@ -1239,7 +1167,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 42 + 46 Without document type @@ -1247,7 +1175,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 46 + 50 Tag: @@ -1255,7 +1183,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 50 + 54 Without any tag @@ -1263,7 +1191,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 54 + 58 Title: @@ -1271,10 +1199,50 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 57 + 61 ASN: + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Title + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Title & content + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Advanced search + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + More like + Filter tags @@ -1408,10 +1376,34 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 66 + 86 Score: + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Created: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Added: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Modified: + Error executing bulk operation: @@ -1857,6 +1849,14 @@ Invalid date. + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + Yes From 1dbd7b9bb472816fdfbcfc1346c74c693880d53b Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:53:07 +0200 Subject: [PATCH 81/93] fix some issues with the search index --- src/documents/index.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index 6fdcff42f..6cd136d80 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -29,7 +29,7 @@ def get_schema(): sortable=True ), content=TEXT(), - archive_serial_number=NUMERIC( + asn=NUMERIC( sortable=True ), @@ -122,7 +122,7 @@ def update_document(writer, doc): has_type=doc.document_type is not None, created=doc.created, added=doc.added, - archive_serial_number=doc.archive_serial_number, + asn=doc.archive_serial_number, modified=doc.modified, ) From a009462b8087bb5580972c7d01bdebe0c2721f59 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:05:26 +0200 Subject: [PATCH 82/93] update messages --- src/locale/en_US/LC_MESSAGES/django.po | 64 +++++++++++++++----------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index 2a17fd9ae..1c7cc5977 100644 --- a/src/locale/en_US/LC_MESSAGES/django.po +++ b/src/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -230,7 +230,7 @@ msgstr "" msgid "logs" msgstr "" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "" @@ -254,103 +254,111 @@ msgstr "" msgid "sort field" msgstr "" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "" @@ -452,7 +460,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "" From 6bb07c72ab08b42273be80e3f86631620d11e4c1 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:19:42 +0200 Subject: [PATCH 83/93] API search documentation --- docs/api.rst | 112 ++++++++++++++-------------------------- docs/usage_overview.rst | 2 + 2 files changed, 40 insertions(+), 74 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index c2120b20f..3a9d244c5 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -147,93 +147,57 @@ The REST api provides three different forms of authentication. Searching for documents ####################### -Paperless-ng offers API endpoints for full text search. These are as follows: +Full text searching is available on the ``/api/documents/`` endpoint. Two specific +query parameters cause the API to return full text search results: -``/api/search/`` -================ +* ``/api/documents/?query=your%20search%20query``: Search for a document using a full text query. + For details on the syntax, see :ref:`basic-usage_searching`. -Get search results based on a query. +* ``/api/documents/?more_like=1234``: Search for documents similar to the document with id 1234. -Query parameters: +Pagination works exactly the same as it does for normal requests on this endpoint. -* ``query``: The query string. See - `here `_ - for details on the syntax. -* ``page``: Specify the page you want to retrieve. Each page - contains 10 search results and the first page is ``page=1``, which - is the default if this is omitted. +Certain limitations apply to full text queries: -Result list object returned by the endpoint: +* Results are always sorted by search score. The results matching the query best will show up first. -.. code:: json +* Only a small subset of filtering parameters are supported. + +Furthermore, each returned document has an additional ``__search_hit__`` attribute with various information +about the search results: + +.. code:: { - "count": 1, - "page": 1, - "page_count": 1, - "corrected_query": "", + "count": 31, + "next": "http://localhost:8000/api/documents/?page=2&query=test", + "previous": null, "results": [ + ... + + { + "id": 123, + "title": "title", + "content": "content", + + ... + + "__search_hit__": { + "score": 0.343, + "highlights": "text Test text", + "rank": 23 + } + }, + + ... + ] } -* ``count``: The approximate total number of results. -* ``page``: The page returned to you. This might be different from - the page you requested, if you requested a page that is behind - the last page. In that case, the last page is returned. -* ``page_count``: The total number of pages. -* ``corrected_query``: Corrected version of the query string. Can be null. - If not null, can be used verbatim to start a new query. -* ``results``: A list of result objects on the current page. - -Result object: - -.. code:: json - - { - "id": 1, - "highlights": [ - - ], - "score": 6.34234, - "rank": 23, - "document": { - - } - } - -* ``id``: the primary key of the found document -* ``highlights``: an object containing parsable highlights for the result. - See below. -* ``score``: The score assigned to the document. A higher score indicates a - better match with the query. Search results are sorted descending by score. -* ``rank``: the position of the document within the entire search results list. -* ``document``: The full json of the document, as returned by - ``/api/documents//``. - -Highlights object: - -Highlights are provided as a list of fragments. A fragment is a longer section of -text from the original document. -Each fragment contains a list of strings, and some of them are marked as a highlight. - -.. code:: json - - [ - [ - {"text": "This is a sample text with a ", "highlight": false}, - {"text": "highlighted", "highlight": true}, - {"text": " word.", "highlight": false} - ], - [ - {"text": "Another", "highlight": true}, - {"text": " fragment with a highlight.", "highlight": false} - ] - ] - -A client may use this example to produce the following output: - -... This is a sample text with a **highlighted** word. ... **Another** fragment with a highlight. ... +* ``score`` is an indication how well this document matches the query relative to the other search results. +* ``highlights`` is an excerpt from the document content and highlights the search terms with ```` tags as shown above. +* ``rank`` is the index of the search results. The first result will have rank 0. ``/api/search/autocomplete/`` ============================= diff --git a/docs/usage_overview.rst b/docs/usage_overview.rst index 2c7093b99..7283db02f 100644 --- a/docs/usage_overview.rst +++ b/docs/usage_overview.rst @@ -255,6 +255,8 @@ Here are a couple examples of tags and types that you could use in your collecti * A tag ``missing_metadata`` when you still need to add some metadata to a document, but can't or don't want to do this right now. +.. _basic-usage_searching: + Searching ######### From d01477b337c9305cfa64ad7b85ee9ed5fbfc2c03 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:23:11 +0200 Subject: [PATCH 84/93] changelog --- docs/changelog.rst | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index ba2bddc25..454f912f5 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -23,10 +23,30 @@ paperless-ng 1.4.0 * Updated python dependencies. + * Automatically inserts typed text when opening "Create new" dialogs on the document details page. + * Fixes * Fixed an issue with null characters in the document content. +.. note:: + + The changed to the full text searching require you to reindex your documents. + *The docker image does this automatically, you don't need to do anything.* + To do this, execute the ``document_index reindex`` management command + (see :ref:`administration-index`). + +.. note:: + + Some packages that paperless depends on are slowly dropping Python 3.6 + support one after another, including the web server. Supporting Python + 3.6 means that I cannot update these packages anymore. + + At some point, paperless will drop Python 3.6 support. If using a bare + metal installation and you're still on Python 3.6, upgrade to 3.7 or newer. + + If using docker, this does not affect you. + paperless-ng 1.3.2 ################## @@ -130,17 +150,6 @@ paperless-ng 1.2.0 * Paperless no longer depends on ``libpoppler-cpp-dev``. -.. note:: - - Some packages that paperless depends on are slowly dropping Python 3.6 - support one after another, including the web server. Supporting Python - 3.6 means that I cannot update these packages anymore. - - At some point, paperless will drop Python 3.6 support. If using a bare - metal installation and you're still on Python 3.6, upgrade to 3.7 or newer. - - If using docker, this does not affect you. - paperless-ng 1.1.4 ################## From 3d0891c73b0e919955ff91c3636d505390c15cbf Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 5 Apr 2021 16:35:15 -0700 Subject: [PATCH 85/93] Updated to work with new unified search interface --- .../filter-editor/filter-editor.component.ts | 5 ++++- src-ui/src/app/services/rest/document.service.ts | 15 +++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index b693c55ec..23c3d810a 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -290,9 +290,12 @@ export class FilterEditorComponent implements OnInit, OnDestroy { distinctUntilChanged() ).subscribe(text => { this._textFilter = text - this.documentService.setSearchQuery(text) + this.documentService.searchQuery = text this.updateRules() }) + + if (this._textFilter) this.documentService.searchQuery = this._textFilter + } ngOnDestroy() { diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 40a400f0c..712b0492f 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -12,7 +12,6 @@ import { DocumentTypeService } from './document-type.service'; import { TagService } from './tag.service'; import { FILTER_RULE_TYPES } from 'src/app/data/filter-rule-type'; import { PaperlessDocumentSuggestions } from 'src/app/data/paperless-document-suggestions'; -import { ActivatedRoute } from '@angular/router'; export const DOCUMENT_SORT_FIELDS = [ { field: 'archive_serial_number', name: $localize`ASN` }, @@ -40,14 +39,10 @@ export interface SelectionData { }) export class DocumentService extends AbstractPaperlessService { - private searchQuery: string + private _searchQuery: string - constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService, private route: ActivatedRoute) { + constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService) { super(http, 'documents') - - this.route.queryParamMap.subscribe(paramMap => { - this.searchQuery = paramMap.get('query') - }) } private filterRulesToQueryParams(filterRules: FilterRule[]) { @@ -99,7 +94,7 @@ export class DocumentService extends AbstractPaperlessService getPreviewUrl(id: number, original: boolean = false): string { let url = this.getResourceUrl(id, 'preview') - if (this.searchQuery) url += `#search="${this.searchQuery}"` + if (this._searchQuery) url += `#search="${this._searchQuery}"` if (original) { url += "?original=true" } @@ -146,8 +141,8 @@ export class DocumentService extends AbstractPaperlessService return this.http.post(this.getResourceUrl(null, 'bulk_download'), {"documents": ids, "content": content}, { responseType: 'blob' }) } - public setSearchQuery(query: string) { - this.searchQuery = query + public set searchQuery(query: string) { + this._searchQuery = query } } From 2728183eee3d90e6c97a17c4343f3b9a272ca52c Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 6 Apr 2021 20:23:18 +0200 Subject: [PATCH 86/93] New Crowdin updates (#871) --- src-ui/src/locale/messages.fr_FR.xlf | 12 ++--- src-ui/src/locale/messages.nl_NL.xlf | 14 +++--- src/locale/cs_CZ/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/de_DE/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/en_GB/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/es_ES/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/fr_FR/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/hu_HU/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/it_IT/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/nl_NL/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/pt_BR/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/pt_PT/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/ro_RO/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/ru_RU/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/xh_ZA/LC_MESSAGES/django.po | 66 +++++++++++++++----------- src/locale/zh_CN/LC_MESSAGES/django.po | 66 +++++++++++++++----------- 16 files changed, 531 insertions(+), 419 deletions(-) diff --git a/src-ui/src/locale/messages.fr_FR.xlf b/src-ui/src/locale/messages.fr_FR.xlf index 6d325e6d4..8ea2adb60 100644 --- a/src-ui/src/locale/messages.fr_FR.xlf +++ b/src-ui/src/locale/messages.fr_FR.xlf @@ -1233,7 +1233,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 88 - Advanced search + Recherche avancée More like @@ -1241,7 +1241,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 91 - More like + Plus comme Filter tags @@ -1386,7 +1386,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 43 - Created: + Date de création : Added: @@ -1394,7 +1394,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 44 - Added: + Date d'ajout : Modified: @@ -1402,7 +1402,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 45 - Modified: + Date de modification : Error executing bulk operation: @@ -1855,7 +1855,7 @@ src/app/components/document-asn/document-asn.component.html 1 - Searching document with asn + Recherche de document avec NSA Yes diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index cf67a9c80..21d3e746d 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -1233,7 +1233,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 88 - Advanced search + Geavanceerd zoeken More like @@ -1241,7 +1241,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts 91 - More like + Meer zoals Filter tags @@ -1386,7 +1386,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 43 - Created: + Aangemaakt op: Added: @@ -1394,7 +1394,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 44 - Added: + Toegevoegd op: Modified: @@ -1402,7 +1402,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 45 - Modified: + Gewijzigd op: Error executing bulk operation: @@ -1701,7 +1701,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts 126 - Upload voltooid, klaar voor meer... + Upload voltooid, wachten om te verwerken... HTTP error: @@ -1855,7 +1855,7 @@ src/app/components/document-asn/document-asn.component.html 1 - Searching document with asn + Document zoeken met asn Yes diff --git a/src/locale/cs_CZ/LC_MESSAGES/django.po b/src/locale/cs_CZ/LC_MESSAGES/django.po index 81c089a9c..f1721aec9 100644 --- a/src/locale/cs_CZ/LC_MESSAGES/django.po +++ b/src/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -226,7 +226,7 @@ msgstr "záznam" msgid "logs" msgstr "záznamy" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "uložený pohled" @@ -250,103 +250,111 @@ msgstr "zobrazit v postranním menu" msgid "sort field" msgstr "pole na řazení" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "třídit opačně" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "titulek obsahuje" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "obsah obsahuje" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "korespondent je" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "typ dokumentu je" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "je v příchozích" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "má tag" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "má jakýkoliv tag" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "vytvořeno před" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "vytvořeno po" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "rok vytvoření je" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "měsíc vytvoření je" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "den vytvoření je" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "přidáno před" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "přidáno po" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "upraveno před" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "upraveno po" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "nemá tag" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "typ pravidla" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "hodnota" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "filtrovací pravidlo" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "filtrovací pravidla" @@ -448,7 +456,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Správa Paperless-ng" diff --git a/src/locale/de_DE/LC_MESSAGES/django.po b/src/locale/de_DE/LC_MESSAGES/django.po index fccea1562..125d2dc39 100644 --- a/src/locale/de_DE/LC_MESSAGES/django.po +++ b/src/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-18 13:43\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -226,7 +226,7 @@ msgstr "Protokoll" msgid "logs" msgstr "Protokoll" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "Gespeicherte Ansicht" @@ -250,103 +250,111 @@ msgstr "In Seitenleiste zeigen" msgid "sort field" msgstr "Sortierfeld" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "Umgekehrte Sortierung" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "Titel enthält" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "Inhalt enthält" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN ist" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "Korrespondent ist" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "Dokumenttyp ist" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "Ist im Posteingang" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "Hat Tag" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "Hat irgendein Tag" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "Ausgestellt vor" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "Ausgestellt nach" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "Ausgestellt im Jahr" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "Ausgestellt im Monat" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "Ausgestellt am Tag" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "Hinzugefügt vor" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "Hinzugefügt nach" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "Geändert vor" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "Geändert nach" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "Hat nicht folgendes Tag" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "Dokument hat keine ASN" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "Titel oder Inhalt enthält" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "Regeltyp" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "Wert" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "Filterregel" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "Filterregeln" @@ -448,7 +456,7 @@ msgstr "Russisch" msgid "Spanish" msgstr "Spanisch" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Paperless-ng Administration" diff --git a/src/locale/en_GB/LC_MESSAGES/django.po b/src/locale/en_GB/LC_MESSAGES/django.po index d33b4fc32..927cc7990 100644 --- a/src/locale/en_GB/LC_MESSAGES/django.po +++ b/src/locale/en_GB/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 22:42\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: English, United Kingdom\n" "Language: en_GB\n" @@ -226,7 +226,7 @@ msgstr "log" msgid "logs" msgstr "logs" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "saved view" @@ -250,103 +250,111 @@ msgstr "show in sidebar" msgid "sort field" msgstr "sort field" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "sort reverse" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "title contains" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "content contains" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN is" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "correspondent is" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "document type is" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "is in inbox" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "has tag" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "has any tag" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "created before" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "created after" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "created year is" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "created month is" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "created day is" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "added before" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "added after" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modified before" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modified after" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "does not have tag" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "does not have ASN" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "title or content contains" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "rule type" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "value" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "filter rule" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "filter rules" @@ -448,7 +456,7 @@ msgstr "Russian" msgid "Spanish" msgstr "Spanish" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Paperless-ng administration" diff --git a/src/locale/es_ES/LC_MESSAGES/django.po b/src/locale/es_ES/LC_MESSAGES/django.po index 8a157440b..8ae873b73 100644 --- a/src/locale/es_ES/LC_MESSAGES/django.po +++ b/src/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -226,7 +226,7 @@ msgstr "log" msgid "logs" msgstr "logs" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "vista guardada" @@ -250,103 +250,111 @@ msgstr "mostrar en barra lateral" msgid "sort field" msgstr "campo de ordenación" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "ordenar al revés" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "el titulo contiene" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "el contenido contiene" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN es" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "tipo de documento es" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "el tipo de documento es" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "está en la bandeja de entrada" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "tiene la etiqueta" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "tiene cualquier etiqueta" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "creado antes" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "creado después" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "el año de creación es" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "el mes de creación es" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "creado el día" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "agregado antes de" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "agregado después de" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modificado después de" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modificado antes de" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "no tiene la etiqueta" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "no tiene ASN" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "el título o cuerpo contiene" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "tipo de regla" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valor" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "regla de filtrado" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "reglas de filtrado" @@ -448,7 +456,7 @@ msgstr "Ruso" msgid "Spanish" msgstr "Español" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Paperless-ng Administración" diff --git a/src/locale/fr_FR/LC_MESSAGES/django.po b/src/locale/fr_FR/LC_MESSAGES/django.po index c36430f34..c6169d5d2 100644 --- a/src/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-18 07:48\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-06 12:03\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -226,7 +226,7 @@ msgstr "journal" msgid "logs" msgstr "journaux" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "vue enregistrée" @@ -250,103 +250,111 @@ msgstr "montrer dans la barre latérale" msgid "sort field" msgstr "champ de tri" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "tri inverse" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "le titre contient" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "le contenu contient" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "le NSA est" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "le correspondant est" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "le type de document est" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "est dans la boîte de réception" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "porte l'étiquette" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "porte l'une des étiquettes" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "créé avant" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "créé après" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "l'année de création est" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "le mois de création est" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "le jour de création est" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "ajouté avant" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "ajouté après" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modifié avant" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modifié après" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "ne porte pas d'étiquette" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "ne porte pas de NSA" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "le titre ou le contenu contient" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "recherche en texte intégral" + +#: documents/models.py:394 +msgid "more like this" +msgstr "documents relatifs" + +#: documents/models.py:405 msgid "rule type" msgstr "type de règle" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valeur" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "règle de filtrage" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "règles de filtrage" @@ -448,7 +456,7 @@ msgstr "Russe" msgid "Spanish" msgstr "Espagnol" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Administration de Paperless-ng" diff --git a/src/locale/hu_HU/LC_MESSAGES/django.po b/src/locale/hu_HU/LC_MESSAGES/django.po index 7c3e637ee..1ff2ac38c 100644 --- a/src/locale/hu_HU/LC_MESSAGES/django.po +++ b/src/locale/hu_HU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -226,7 +226,7 @@ msgstr "" msgid "logs" msgstr "" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "" @@ -250,103 +250,111 @@ msgstr "" msgid "sort field" msgstr "" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "" @@ -448,7 +456,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "" diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index 9c7cd71ef..cb7ee6711 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-04-01 11:51\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 21:31\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -226,7 +226,7 @@ msgstr "log" msgid "logs" msgstr "log" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "vista salvata" @@ -250,103 +250,111 @@ msgstr "mostra nella barra laterale" msgid "sort field" msgstr "campo di ordinamento" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "ordine invertito" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "il titolo contiene" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "il contenuto contiene" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN è" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "la corrispondenza è" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "il tipo di documento è" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "è in arrivo" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "ha etichetta" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "ha qualsiasi etichetta" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "creato prima del" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "creato dopo il" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "l'anno di creazione è" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "il mese di creazione è" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "il giorno di creazione è" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "aggiunto prima del" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "aggiunto dopo il" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modificato prima del" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modificato dopo" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "non ha tag" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "non ha ASN" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "il titolo o il contenuto contiene" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "query fulltext" + +#: documents/models.py:394 +msgid "more like this" +msgstr "altro come questo" + +#: documents/models.py:405 msgid "rule type" msgstr "tipo di regola" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valore" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "regola filtro" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "regole filtro" @@ -448,7 +456,7 @@ msgstr "Russo" msgid "Spanish" msgstr "Spagnolo" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Amministrazione di Paperless-ng" diff --git a/src/locale/nl_NL/LC_MESSAGES/django.po b/src/locale/nl_NL/LC_MESSAGES/django.po index c07b3d521..dba3a5760 100644 --- a/src/locale/nl_NL/LC_MESSAGES/django.po +++ b/src/locale/nl_NL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-18 20:12\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-06 12:03\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -226,7 +226,7 @@ msgstr "bericht" msgid "logs" msgstr "berichten" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "opgeslagen view" @@ -250,103 +250,111 @@ msgstr "weergeven in zijbalk" msgid "sort field" msgstr "sorteerveld" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "omgekeerd sorteren" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "titel bevat" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "inhoud bevat" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "ASN is" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "correspondent is" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "documenttype is" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "zit in \"Postvak in\"" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "heeft etiket" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "heeft één van de etiketten" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "aangemaakt voor" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "aangemaakt na" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "aangemaakt jaar is" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "aangemaakte maand is" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "aangemaakte dag is" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "toegevoegd voor" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "toegevoegd na" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "gewijzigd voor" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "gewijzigd na" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "heeft geen etiket" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "heeft geen ASN" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "titel of inhoud bevat" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "inhoud doorzoeken" + +#: documents/models.py:394 +msgid "more like this" +msgstr "meer zoals dit" + +#: documents/models.py:405 msgid "rule type" msgstr "type regel" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "waarde" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "filterregel" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "filterregels" @@ -448,7 +456,7 @@ msgstr "Russisch" msgid "Spanish" msgstr "Spaans" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Paperless-ng administratie" diff --git a/src/locale/pt_BR/LC_MESSAGES/django.po b/src/locale/pt_BR/LC_MESSAGES/django.po index 84d1c2c54..315f72672 100644 --- a/src/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -226,7 +226,7 @@ msgstr "log" msgid "logs" msgstr "logs" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "visualização" @@ -250,103 +250,111 @@ msgstr "exibir no painel lateral" msgid "sort field" msgstr "ordenar campo" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "odernar reverso" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "título contém" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "conteúdo contém" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "NSA é" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "correspondente é" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "tipo de documento é" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "é caixa de entrada" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "contém etiqueta" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "contém qualquer etiqueta" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "criado antes de" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "criado depois de" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "ano de criação é" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "mês de criação é" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "dia de criação é" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "adicionado antes de" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "adicionado depois de" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modificado antes de" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modificado depois de" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "não tem etiqueta" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "título ou conteúdo contém" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "tipo de regra" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valor" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "regra de filtragem" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "regras de filtragem" @@ -448,7 +456,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Administração do Paperless-ng" diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index 6ed99d226..70eb58d77 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-18 22:23\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 21:31\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -226,7 +226,7 @@ msgstr "registo" msgid "logs" msgstr "registos" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "vista guardada" @@ -250,103 +250,111 @@ msgstr "mostrar na navegação lateral" msgid "sort field" msgstr "ordenar campo" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "ordenar inversamente" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "o título contém" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "o conteúdo contém" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "O NSA é" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "o correspondente é" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "o tipo de documento é" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "está na entrada" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "tem etiqueta" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "tem qualquer etiqueta" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "criado antes" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "criado depois" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "ano criada é" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "mês criado é" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "dia criado é" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "adicionada antes" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "adicionado depois de" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modificado antes de" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modificado depois de" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "não tem etiqueta" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "não possui um NSA" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "título ou conteúdo contém" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "consulta de texto completo" + +#: documents/models.py:394 +msgid "more like this" +msgstr "mais como este" + +#: documents/models.py:405 msgid "rule type" msgstr "tipo de regra" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valor" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "regra de filtragem" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "regras de filtragem" @@ -448,7 +456,7 @@ msgstr "Russo" msgid "Spanish" msgstr "Espanhol" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Administração do Paperless-ng" diff --git a/src/locale/ro_RO/LC_MESSAGES/django.po b/src/locale/ro_RO/LC_MESSAGES/django.po index dcb505aba..2e7eeda65 100644 --- a/src/locale/ro_RO/LC_MESSAGES/django.po +++ b/src/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-28 09:07\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:19\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -226,7 +226,7 @@ msgstr "jurnal" msgid "logs" msgstr "jurnale" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "vizualizare" @@ -250,103 +250,111 @@ msgstr "afișează in bara laterala" msgid "sort field" msgstr "sortează camp" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "sortează invers" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "titlul conține" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "conținutul conține" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "Avizul prealabil de expediție este" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "corespondentul este" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "tipul documentului este" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "este în inbox" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "are eticheta" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "are orice eticheta" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "creat înainte de" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "creat după" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "anul creării este" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "luna creării este" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "ziua creării este" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "adăugat înainte de" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "adăugat după" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "modificat înainte de" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "modificat după" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "nu are etichetă" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "nu are aviz prealabil de expediție" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "titlul sau conținutul conține" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "tip de regula" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "valoare" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "regulă de filtrare" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "reguli de filtrare" @@ -448,7 +456,7 @@ msgstr "Rusă" msgid "Spanish" msgstr "Spaniolă" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Administrare Paperless-ng" diff --git a/src/locale/ru_RU/LC_MESSAGES/django.po b/src/locale/ru_RU/LC_MESSAGES/django.po index bc5de736b..ef61d2aa3 100644 --- a/src/locale/ru_RU/LC_MESSAGES/django.po +++ b/src/locale/ru_RU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 22:42\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 21:31\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -226,7 +226,7 @@ msgstr "журнал" msgid "logs" msgstr "логи" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "сохранённое представление" @@ -250,103 +250,111 @@ msgstr "показать в боковой панели" msgid "sort field" msgstr "Поле сортировки" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "обратная сортировка" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "заголовок содержит" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "содержимое содержит" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "АН" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "корреспондент" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "тип документа" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "во входящих" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "есть тег" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "есть любой тег" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "создан до" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "создан после" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "год создания" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "месяц создания" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "день создания" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "добавлен до" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "добавлен после" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "изменен до" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "изменен после" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "не имеет тега" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "не имеет архивного номера" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "Название или содержимое включает" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "полнотекстовый запрос" + +#: documents/models.py:394 +msgid "more like this" +msgstr "больше похожих" + +#: documents/models.py:405 msgid "rule type" msgstr "Тип правила" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "значение" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "Правило фильтрации" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "правила фильтрации" @@ -448,7 +456,7 @@ msgstr "Русский" msgid "Spanish" msgstr "Испанский" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "Администрирование Paperless-ng" diff --git a/src/locale/xh_ZA/LC_MESSAGES/django.po b/src/locale/xh_ZA/LC_MESSAGES/django.po index 149e2b7ad..3bdc5631f 100644 --- a/src/locale/xh_ZA/LC_MESSAGES/django.po +++ b/src/locale/xh_ZA/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:47\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Xhosa\n" "Language: xh_ZA\n" @@ -226,7 +226,7 @@ msgstr "crwdns2628:0crwdne2628:0" msgid "logs" msgstr "crwdns2630:0crwdne2630:0" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "crwdns2632:0crwdne2632:0" @@ -250,103 +250,111 @@ msgstr "crwdns2640:0crwdne2640:0" msgid "sort field" msgstr "crwdns2642:0crwdne2642:0" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "crwdns2644:0crwdne2644:0" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "crwdns2646:0crwdne2646:0" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "crwdns2648:0crwdne2648:0" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "crwdns2650:0crwdne2650:0" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "crwdns2652:0crwdne2652:0" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "crwdns2654:0crwdne2654:0" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "crwdns2656:0crwdne2656:0" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "crwdns2658:0crwdne2658:0" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "crwdns2660:0crwdne2660:0" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "crwdns2662:0crwdne2662:0" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "crwdns2664:0crwdne2664:0" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "crwdns2666:0crwdne2666:0" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "crwdns2668:0crwdne2668:0" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "crwdns2670:0crwdne2670:0" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "crwdns2672:0crwdne2672:0" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "crwdns2674:0crwdne2674:0" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "crwdns2676:0crwdne2676:0" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "crwdns2678:0crwdne2678:0" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "crwdns2680:0crwdne2680:0" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "crwdns3408:0crwdne3408:0" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "crwdns3410:0crwdne3410:0" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "crwdns3438:0crwdne3438:0" + +#: documents/models.py:394 +msgid "more like this" +msgstr "crwdns3440:0crwdne3440:0" + +#: documents/models.py:405 msgid "rule type" msgstr "crwdns2682:0crwdne2682:0" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "crwdns2684:0crwdne2684:0" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "crwdns2686:0crwdne2686:0" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "crwdns2688:0crwdne2688:0" @@ -448,7 +456,7 @@ msgstr "crwdns3414:0crwdne3414:0" msgid "Spanish" msgstr "crwdns3420:0crwdne3420:0" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "crwdns2732:0crwdne2732:0" diff --git a/src/locale/zh_CN/LC_MESSAGES/django.po b/src/locale/zh_CN/LC_MESSAGES/django.po index 2c7ae4244..17d9d5ffc 100644 --- a/src/locale/zh_CN/LC_MESSAGES/django.po +++ b/src/locale/zh_CN/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-17 22:31+0100\n" -"PO-Revision-Date: 2021-03-17 21:48\n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-05 20:20\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -226,7 +226,7 @@ msgstr "" msgid "logs" msgstr "" -#: documents/models.py:344 documents/models.py:396 +#: documents/models.py:344 documents/models.py:401 msgid "saved view" msgstr "" @@ -250,103 +250,111 @@ msgstr "" msgid "sort field" msgstr "" -#: documents/models.py:364 +#: documents/models.py:367 msgid "sort reverse" msgstr "" -#: documents/models.py:370 +#: documents/models.py:373 msgid "title contains" msgstr "" -#: documents/models.py:371 +#: documents/models.py:374 msgid "content contains" msgstr "" -#: documents/models.py:372 +#: documents/models.py:375 msgid "ASN is" msgstr "" -#: documents/models.py:373 +#: documents/models.py:376 msgid "correspondent is" msgstr "" -#: documents/models.py:374 +#: documents/models.py:377 msgid "document type is" msgstr "" -#: documents/models.py:375 +#: documents/models.py:378 msgid "is in inbox" msgstr "" -#: documents/models.py:376 +#: documents/models.py:379 msgid "has tag" msgstr "" -#: documents/models.py:377 +#: documents/models.py:380 msgid "has any tag" msgstr "" -#: documents/models.py:378 +#: documents/models.py:381 msgid "created before" msgstr "" -#: documents/models.py:379 +#: documents/models.py:382 msgid "created after" msgstr "" -#: documents/models.py:380 +#: documents/models.py:383 msgid "created year is" msgstr "" -#: documents/models.py:381 +#: documents/models.py:384 msgid "created month is" msgstr "" -#: documents/models.py:382 +#: documents/models.py:385 msgid "created day is" msgstr "" -#: documents/models.py:383 +#: documents/models.py:386 msgid "added before" msgstr "" -#: documents/models.py:384 +#: documents/models.py:387 msgid "added after" msgstr "" -#: documents/models.py:385 +#: documents/models.py:388 msgid "modified before" msgstr "" -#: documents/models.py:386 +#: documents/models.py:389 msgid "modified after" msgstr "" -#: documents/models.py:387 +#: documents/models.py:390 msgid "does not have tag" msgstr "" -#: documents/models.py:388 +#: documents/models.py:391 msgid "does not have ASN" msgstr "" -#: documents/models.py:389 +#: documents/models.py:392 msgid "title or content contains" msgstr "" -#: documents/models.py:400 +#: documents/models.py:393 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:394 +msgid "more like this" +msgstr "" + +#: documents/models.py:405 msgid "rule type" msgstr "" -#: documents/models.py:404 +#: documents/models.py:409 msgid "value" msgstr "" -#: documents/models.py:410 +#: documents/models.py:415 msgid "filter rule" msgstr "" -#: documents/models.py:411 +#: documents/models.py:416 msgid "filter rules" msgstr "" @@ -448,7 +456,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: paperless/urls.py:118 +#: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "" From 645297d68c72f146b9b773652f11c995ccdc6db2 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 6 Apr 2021 21:31:30 +0200 Subject: [PATCH 87/93] documentation --- docs/administration.rst | 4 +++- docs/changelog.rst | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/administration.rst b/docs/administration.rst index 5d6367277..c9a5650f0 100644 --- a/docs/administration.rst +++ b/docs/administration.rst @@ -193,7 +193,9 @@ This table lists the compatible versions for each database migration number. +------------------+-----------------+ | 1012 | 1.1.0 - 1.2.1 | +------------------+-----------------+ -| 1014 | 1.3.0 - current | +| 1014 | 1.3.0 - 1.3.1 | ++------------------+-----------------+ +| 1016 | 1.3.2 - current | +------------------+-----------------+ Execute the following management command to migrate your database: diff --git a/docs/changelog.rst b/docs/changelog.rst index 454f912f5..b08fd17e8 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -15,6 +15,8 @@ paperless-ng 1.4.0 * Changes + * Firefox only: Highlight search query in PDF previews. + * New URL pattern for accessing documents by ASN directly (http:///asn/123) * Added logging when executing pre- and post-consume scripts. From a3c4e4c6b65086f9c1af9569b9a771ef8320d917 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 6 Apr 2021 21:31:42 +0200 Subject: [PATCH 88/93] install script: configure time zone --- install-paperless-ng.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/install-paperless-ng.sh b/install-paperless-ng.sh index c550d253c..39541dcc3 100755 --- a/install-paperless-ng.sh +++ b/install-paperless-ng.sh @@ -62,7 +62,7 @@ if [[ -z $(which docker-compose) ]] ; then exit 1 fi -# Check if user has permissions to run Docker by trying to get the status of Docker (docker status). +# Check if user has permissions to run Docker by trying to get the status of Docker (docker status). # If this fails, the user probably does not have permissions for Docker. docker stats --no-stream 2>/dev/null 1>&2 if [ $? -ne 0 ] ; then @@ -73,6 +73,8 @@ if [ $? -ne 0 ] ; then sleep 3 fi +default_time_zone=$(timedatectl show -p Timezone --value) + set -e echo "" @@ -145,6 +147,15 @@ echo "" ask "Port" "8000" PORT=$ask_result +echo "" +echo "Paperless requires you to configure the current time zone correctly." +echo "Otherwise, the dates of your documents may appear off by one day," +echo "depending on where you are on earth." +echo "" + +ask "Current time zone" "$default_time_zone" +TIME_ZONE=$ask_result + echo "" echo "Database backend: PostgreSQL and SQLite are available. Use PostgreSQL" echo "if unsure. If you're running on a low-power device such as Raspberry" @@ -280,6 +291,7 @@ DEFAULT_LANGUAGES="deu eng fra ita spa" if [[ ! $USERMAP_GID == "1000" ]] ; then echo "USERMAP_GID=$USERMAP_GID" fi + echo "PAPERLESS_ZIME_ZONE=$TIME_ZONE" echo "PAPERLESS_OCR_LANGUAGE=$OCR_LANGUAGE" echo "PAPERLESS_SECRET_KEY=$SECRET_KEY" if [[ ! " ${DEFAULT_LANGUAGES[@]} " =~ " ${OCR_LANGUAGE} " ]] ; then From b7326afe5a7aaa8de4e2ac8c0107a82f1fc00565 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 6 Apr 2021 14:25:59 -0700 Subject: [PATCH 89/93] Fix alignment of card info on large cards --- .../document-card-large/document-card-large.component.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html index 3a552eb4e..cabf4af41 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html @@ -82,7 +82,8 @@ {{document.created | customDate:'mediumDate'}} -
+ +
Score:
From 4db75537cbe0d53e2119f181db813652293ba6f2 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 10 Apr 2021 14:38:19 +0200 Subject: [PATCH 90/93] install sudo from stable --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e41aeb7ac..2b06ded0f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,9 @@ RUN ./configure && make FROM python:3.7-slim # Binary dependencies -RUN echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \ +RUN apt-get update \ + && apt-get -y --no-install-recommends install sudo \ + && echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \ && apt-get update \ && apt-get -y --no-install-recommends install \ # Basic dependencies @@ -19,7 +21,6 @@ RUN echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.lis gnupg \ imagemagick \ gettext \ - sudo \ tzdata \ # fonts for text file thumbnail generation fonts-liberation \ From 1091387f48115db1c8f35675b67996abfc2d5353 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 10 Apr 2021 14:38:39 +0200 Subject: [PATCH 91/93] better logging for the retagger --- src/documents/management/commands/document_retagger.py | 5 ++--- src/documents/signals/handlers.py | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/documents/management/commands/document_retagger.py b/src/documents/management/commands/document_retagger.py index 854117fdd..4a23faa86 100755 --- a/src/documents/management/commands/document_retagger.py +++ b/src/documents/management/commands/document_retagger.py @@ -1,5 +1,6 @@ import logging +import tqdm from django.core.management.base import BaseCommand from documents.classifier import load_classifier @@ -67,9 +68,7 @@ class Command(BaseCommand): classifier = load_classifier() - for document in documents: - logger.info( - f"Processing document {document.title}") + for document in tqdm.tqdm(documents): if options['correspondent']: set_correspondent( diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index ad63bf301..f46adbb16 100755 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -46,13 +46,13 @@ def set_correspondent(sender, selected = None if potential_count > 1: if use_first: - logger.info( + logger.debug( f"Detected {potential_count} potential correspondents, " f"so we've opted for {selected}", extra={'group': logging_group} ) else: - logger.info( + logger.debug( f"Detected {potential_count} potential correspondents, " f"not assigning any correspondent", extra={'group': logging_group} From ba5899de7b6ae462e9bef6531f3bc0bb6563dccf Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 17 Apr 2021 13:34:42 +0200 Subject: [PATCH 92/93] New Crowdin updates (#874) --- src-ui/src/locale/messages.pl_PL.xlf | 2298 ++++++++++++++++++++++++ src/locale/de_DE/LC_MESSAGES/django.po | 6 +- src/locale/pl_PL/LC_MESSAGES/django.po | 670 +++++++ 3 files changed, 2971 insertions(+), 3 deletions(-) create mode 100644 src-ui/src/locale/messages.pl_PL.xlf create mode 100644 src/locale/pl_PL/LC_MESSAGES/django.po diff --git a/src-ui/src/locale/messages.pl_PL.xlf b/src-ui/src/locale/messages.pl_PL.xlf new file mode 100644 index 000000000..ff14fe12d --- /dev/null +++ b/src-ui/src/locale/messages.pl_PL.xlf @@ -0,0 +1,2298 @@ + + + + + + Document added + + src/app/app.component.ts + 51 + + Dokument dodano + + + Document was added to paperless. + + src/app/app.component.ts + 51 + + Dokument został dodany do paperless. + + + Open document + + src/app/app.component.ts + 51 + + Otwórz dokument + + + Could not add : + + src/app/app.component.ts + 59 + + Nie można dodać : + + + New document detected + + src/app/app.component.ts + 65 + + Wykryto nowy dokument + + + Document is being processed by paperless. + + src/app/app.component.ts + 65 + + Dokument jest przetwarzany przez paperless. + + + Documents + + src/app/components/document-list/document-list.component.ts + 51 + + Dokumenty + + + View "" saved successfully. + + src/app/components/document-list/document-list.component.ts + 116 + + Widok "" został zapisany. + + + View "" created successfully. + + src/app/components/document-list/document-list.component.ts + 138 + + Widok "" został utworzony pomyślnie. + + + Select + + src/app/components/document-list/document-list.component.html + 7 + + Wybierz + + + Select none + + src/app/components/document-list/document-list.component.html + 10 + + Odznacz wszystko + + + Select page + + src/app/components/document-list/document-list.component.html + 11 + + Zaznacz wszystko na tej stronie + + + Select all + + src/app/components/document-list/document-list.component.html + 12 + + Zaznacz wszystko + + + Sort + + src/app/components/document-list/document-list.component.html + 39 + + Sortowanie + + + Views + + src/app/components/document-list/document-list.component.html + 64 + + Widoki + + + Save as... + + src/app/components/document-list/document-list.component.html + 72 + + Zapisz jako... + + + Save "" + + src/app/components/document-list/document-list.component.html + 71 + + Zapisz "" + + + {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} + + src/app/components/document-list/document-list.component.html + 85 + + {VAR_PLURAL, plural, one {} few {Wybrano z dokumentów} many {Wybrano z dokumentów} =1 {Wybrano z jednego dokumentu} other {Wybrano z dokumentów}} + + + {VAR_PLURAL, plural, =1 {One document} other { documents}} + + src/app/components/document-list/document-list.component.html + 86 + + {VAR_PLURAL, plural, one {} few { dokumenty} many { dokumentów} =1 {Jeden dokument} other { dokumenty}} + + + (filtered) + + src/app/components/document-list/document-list.component.html + 86 + + Filtrowane + + + ASN + + src/app/components/document-list/document-list.component.html + 111 + + ASN + + + Correspondent + + src/app/components/document-list/document-list.component.html + 117 + + Korespondent + + + Title + + src/app/components/document-list/document-list.component.html + 123 + + Tytuł + + + Document type + + src/app/components/document-list/document-list.component.html + 129 + + Typ dokumentu + + + Created + + src/app/components/document-list/document-list.component.html + 135 + + Utworzony + + + Added + + src/app/components/document-list/document-list.component.html + 141 + + Dodano + + + Confirm delete + + src/app/components/document-detail/document-detail.component.ts + 204 + + Potwierdź usunięcie + + + Do you really want to delete document ""? + + src/app/components/document-detail/document-detail.component.ts + 205 + + Czy na pewno chcesz usunąć dokument""? + + + The files for this document will be deleted permanently. This operation cannot be undone. + + src/app/components/document-detail/document-detail.component.ts + 206 + + Pliki tego dokumentu zostaną trwale usunięte. Tej operacji nie można cofnąć. + + + Delete document + + src/app/components/document-detail/document-detail.component.ts + 208 + + Usuń dokument + + + Error deleting document: + + src/app/components/document-detail/document-detail.component.ts + 215 + + Błąd podczas usuwania dokumentu: + + + Delete + + src/app/components/document-detail/document-detail.component.html + 15 + + Usuń + + + Download + + src/app/components/document-detail/document-detail.component.html + 23 + + Pobierz + + + More like this + + src/app/components/document-detail/document-detail.component.html + 38 + + Podobne dokumenty + + + Close + + src/app/components/document-detail/document-detail.component.html + 44 + + Zamknij + + + Details + + src/app/components/document-detail/document-detail.component.html + 56 + + Szczegóły + + + Content + + src/app/components/document-detail/document-detail.component.html + 72 + + Zawartość + + + Metadata + + src/app/components/document-detail/document-detail.component.html + 81 + + Metadane + + + Discard + + src/app/components/document-detail/document-detail.component.html + 130 + + Zaniechaj + + + Save + + src/app/components/document-detail/document-detail.component.html + 132 + + Zapisz + + + Page + + src/app/components/document-detail/document-detail.component.html + 4 + + Strona + + + of + + src/app/components/document-detail/document-detail.component.html + 8 + + z + + + Download original + + src/app/components/document-detail/document-detail.component.html + 29 + + Pobierz oryginał + + + Archive serial number + + src/app/components/document-detail/document-detail.component.html + 60 + + Numer seryjny archiwum + + + Date created + + src/app/components/document-detail/document-detail.component.html + 61 + + Data utworzenia + + + Date modified + + src/app/components/document-detail/document-detail.component.html + 87 + + Data modyfikacji + + + Date added + + src/app/components/document-detail/document-detail.component.html + 91 + + Data dodania + + + Media filename + + src/app/components/document-detail/document-detail.component.html + 95 + + Nazwa pliku + + + Original MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 99 + + MD5 - Suma kontrolna Oryginału + + + Original file size + + src/app/components/document-detail/document-detail.component.html + 103 + + Rozmiar oryginalnego pliku + + + Original mime type + + src/app/components/document-detail/document-detail.component.html + 107 + + Typ mime oryginału + + + Archive MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 111 + + Suma kontrolna archiwum + + + Archive file size + + src/app/components/document-detail/document-detail.component.html + 115 + + Rozmiar pliku archiwalnego + + + Original document metadata + + src/app/components/document-detail/document-detail.component.html + 121 + + Metadane oryginalnego dokumentu + + + Archived document metadata + + src/app/components/document-detail/document-detail.component.html + 122 + + Metadane zarchiwizowanego dokumentu + + + Save & next + + src/app/components/document-detail/document-detail.component.html + 131 + + Zapisz & następny + + + Hello , welcome to Paperless-ng! + + src/app/components/dashboard/dashboard.component.ts + 33 + + Cześć , witaj w Paperless-ng! + + + Welcome to Paperless-ng! + + src/app/components/dashboard/dashboard.component.ts + 35 + + Witaj w Paperless-ng! + + + Dashboard + + src/app/components/dashboard/dashboard.component.html + 1 + + Kokpit + + + Do you really want to delete the tag ""? + + src/app/components/manage/tag-list/tag-list.component.ts + 26 + + Czy na pewno chcesz usunąć tag "? + + + Tags + + src/app/components/manage/tag-list/tag-list.component.html + 1 + + Tagi + + + Create + + src/app/components/manage/tag-list/tag-list.component.html + 2 + + Utwórz + + + Filter by: + + src/app/components/manage/tag-list/tag-list.component.html + 8 + + Filtruj według: + + + Name + + src/app/components/manage/tag-list/tag-list.component.html + 9 + + Nazwa + + + Color + + src/app/components/manage/tag-list/tag-list.component.html + 20 + + Kolor + + + Matching + + src/app/components/manage/tag-list/tag-list.component.html + 21 + + Dopasowanie + + + Document count + + src/app/components/manage/tag-list/tag-list.component.html + 22 + + Liczba dokumentów + + + Actions + + src/app/components/manage/tag-list/tag-list.component.html + 23 + + Akcje + + + Documents + + src/app/components/manage/tag-list/tag-list.component.html + 38 + + Dokumenty + + + Edit + + src/app/components/manage/tag-list/tag-list.component.html + 43 + + Edytuj + + + Do you really want to delete the document type ""? + + src/app/components/manage/document-type-list/document-type-list.component.ts + 26 + + Czy na pewno chcesz usunąć typ dokumentu ""? + + + Document types + + src/app/components/manage/document-type-list/document-type-list.component.html + 1 + + Typy dokumentów + + + Logs + + src/app/components/manage/logs/logs.component.html + 1 + + Logi + + + Saved view "" deleted. + + src/app/components/manage/settings/settings.component.ts + 68 + + Zapisany widok "" został usunięty. + + + Settings saved successfully. + + src/app/components/manage/settings/settings.component.ts + 89 + + Ustawienia zostały zapisane. + + + Use system language + + src/app/components/manage/settings/settings.component.ts + 94 + + Użyj języka systemowego + + + Use date format of display language + + src/app/components/manage/settings/settings.component.ts + 100 + + Użyj formatu daty według wyświetlanego języka + + + Error while storing settings on server: + + src/app/components/manage/settings/settings.component.ts + 117 + + Błąd podczas zapisywania ustawień na serwerze: + + + Settings + + src/app/components/manage/settings/settings.component.html + 1 + + Ustawienia + + + General settings + + src/app/components/manage/settings/settings.component.html + 10 + + Ustawienia ogólne + + + Notifications + + src/app/components/manage/settings/settings.component.html + 116 + + Powiadomienia + + + Saved views + + src/app/components/manage/settings/settings.component.html + 134 + + Zapisane widoki + + + Appearance + + src/app/components/manage/settings/settings.component.html + 13 + + Wygląd + + + Display language + + src/app/components/manage/settings/settings.component.html + 17 + + Język + + + You need to reload the page after applying a new language. + + src/app/components/manage/settings/settings.component.html + 25 + + Musisz przeładować stronę po wybraniu nowego języka. + + + Date display + + src/app/components/manage/settings/settings.component.html + 32 + + Wyświetlanie daty + + + Date format + + src/app/components/manage/settings/settings.component.html + 45 + + Format daty + + + Short: + + src/app/components/manage/settings/settings.component.html + 51 + + Krótki: + + + Medium: + + src/app/components/manage/settings/settings.component.html + 55 + + Średni: + + + Long: + + src/app/components/manage/settings/settings.component.html + 59 + + Długi: + + + Items per page + + src/app/components/manage/settings/settings.component.html + 67 + + Ilość elementów na stronie + + + Document editor + + src/app/components/manage/settings/settings.component.html + 83 + + Edytor dokumentów + + + Use PDF viewer provided by the browser + + src/app/components/manage/settings/settings.component.html + 87 + + Wyświetl PDF przez wbudowaną przeglądarkę + + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + src/app/components/manage/settings/settings.component.html + 87 + + Zazwyczaj działa szybciej przy wyświetlaniu dużych dokumentów w formacie PDF, ale może nie działać na niektórych przeglądarkach. + + + Dark mode + + src/app/components/manage/settings/settings.component.html + 94 + + Tryb ciemny + + + Use system settings + + src/app/components/manage/settings/settings.component.html + 97 + + Użyj ustawień systemowych + + + Enable dark mode + + src/app/components/manage/settings/settings.component.html + 98 + + Użyj ciemnego motywu + + + Invert thumbnails in dark mode + + src/app/components/manage/settings/settings.component.html + 99 + + Odwróć kolory miniaturki w trybie ciemnym + + + Bulk editing + + src/app/components/manage/settings/settings.component.html + 103 + + Masowa edycja + + + Show confirmation dialogs + + src/app/components/manage/settings/settings.component.html + 107 + + Używaj dialogów potwierdzenia + + + Deleting documents will always ask for confirmation. + + src/app/components/manage/settings/settings.component.html + 107 + + Usuwanie dokumentów zawsze będzie wymagało potwierdzenia. + + + Apply on close + + src/app/components/manage/settings/settings.component.html + 108 + + Zamknięcie zapisuje zmiany + + + Document processing + + src/app/components/manage/settings/settings.component.html + 119 + + Przetwarzanie dokumentów + + + Show notifications when new documents are detected + + src/app/components/manage/settings/settings.component.html + 123 + + Pokaż powiadomienia, gdy zostaną wykryte nowe dokumenty + + + Show notifications when document processing completes successfully + + src/app/components/manage/settings/settings.component.html + 124 + + Pokaż powiadomienia, gdy przetwarzanie dokumentu zakończy się pomyślnie + + + Show notifications when document processing fails + + src/app/components/manage/settings/settings.component.html + 125 + + Pokaż powiadomienia, gdy przetwarzanie dokumentu nie powiedzie się + + + Suppress notifications on dashboard + + src/app/components/manage/settings/settings.component.html + 126 + + Wyłącz powiadomienia na pulpicie + + + This will suppress all messages about document processing status on the dashboard. + + src/app/components/manage/settings/settings.component.html + 126 + + Wyłącz pokazywanie wszystkich wiadomości o statusie przetwarzania dokumentów na pulpicie. + + + Appears on + + src/app/components/manage/settings/settings.component.html + 146 + + Wyświetlanie + + + Show on dashboard + + src/app/components/manage/settings/settings.component.html + 149 + + Pokaż na pulpicie + + + Show in sidebar + + src/app/components/manage/settings/settings.component.html + 153 + + Pokaż w panelu bocznym + + + No saved views defined. + + src/app/components/manage/settings/settings.component.html + 163 + + Nie zdefiniowano zapisanych widoków. + + + 404 Not Found + + src/app/components/not-found/not-found.component.html + 7 + + 404 Nie znaleziono + + + Do you really want to delete the correspondent ""? + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 26 + + Czy na pewno chcesz usunąć nadawcę "? + + + Correspondents + + src/app/components/manage/correspondent-list/correspondent-list.component.html + 1 + + Nadawcy + + + Last correspondence + + src/app/components/manage/correspondent-list/correspondent-list.component.html + 22 + + Ostatnia korespondencja + + + Confirmation + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 17 + + Potwierdzenie + + + Confirm + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 29 + + Potwierdź + + + Cancel + + src/app/components/common/confirm-dialog/confirm-dialog.component.html + 12 + + Anuluj + + + Create new correspondent + + src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 21 + + Dodaj nowego nadawcę + + + Edit correspondent + + src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 25 + + Edytuj nadawcę + + + Matching algorithm + + src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 10 + + Algorytm dopasowania + + + Matching pattern + + src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 11 + + Wzorzec dopasowania + + + Case insensitive + + src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 12 + + (Nieuwzględniający wielkości liter) + + + Create new tag + + src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts + 22 + + Utwórz tag + + + Edit tag + + src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts + 26 + + Edytuj tag + + + Inbox tag + + src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html + 13 + + Tag skrzynki odbiorczej + + + Inbox tags are automatically assigned to all consumed documents. + + src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html + 13 + + Tagi skrzynki odbiorczej są automatycznie przypisane do wszystkich przetworzonych dokumentów. + + + Create new document type + + src/app/components/manage/document-type-list/document-type-edit-dialog/document-type-edit-dialog.component.ts + 21 + + Utwórz nowy dokument + + + Edit document type + + src/app/components/manage/document-type-list/document-type-edit-dialog/document-type-edit-dialog.component.ts + 25 + + Edytuj typ dokumentu + + + Paperless-ng + + src/app/components/app-frame/app-frame.component.html + 11 + + app title + Paperless-ng + + + Search documents + + src/app/components/app-frame/app-frame.component.html + 15 + + Szukaj dokumentów + + + Logout + + src/app/components/app-frame/app-frame.component.html + 45 + + Wyloguj + + + Manage + + src/app/components/app-frame/app-frame.component.html + 112 + + Zarządzaj + + + Admin + + src/app/components/app-frame/app-frame.component.html + 154 + + Admin + + + Info + + src/app/components/app-frame/app-frame.component.html + 160 + + Info + + + Documentation + + src/app/components/app-frame/app-frame.component.html + 167 + + Dokumentacja + + + GitHub + + src/app/components/app-frame/app-frame.component.html + 175 + + GitHub + + + Suggest an idea + + src/app/components/app-frame/app-frame.component.html + 181 + + Zaproponuj pomysł + + + Logged in as + + src/app/components/app-frame/app-frame.component.html + 34 + + Zalogowano jako + + + Open documents + + src/app/components/app-frame/app-frame.component.html + 87 + + Otwarte dokumenty + + + Close all + + src/app/components/app-frame/app-frame.component.html + 106 + + Zamknij wszystkie + + + Correspondent: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 37 + + Nadawca: + + + Without correspondent + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 39 + + Bez nadawcy + + + Type: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 44 + + Rodzaj: + + + Without document type + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 46 + + Bez typu dokumentu + + + Tag: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 50 + + Tag: + + + Without any tag + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 54 + + Bez żadnego tagu + + + Title: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 58 + + Tytuł: + + + ASN: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 61 + + Numer archiwum: + + + Title + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 85 + + Tytuł + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 86 + + Tytuł & treść + + + ASN + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 87 + + ASN + + + Advanced search + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 88 + + Wyszukiwanie zaawansowane + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 91 + + Podobne do + + + Filter tags + + src/app/components/document-list/filter-editor/filter-editor.component.html + 20 + + Filtruj tagi + + + Filter correspondents + + src/app/components/document-list/filter-editor/filter-editor.component.html + 28 + + Filtruj nadawców + + + Filter document types + + src/app/components/document-list/filter-editor/filter-editor.component.html + 35 + + Filtruj typy dokumentów + + + Reset filters + + src/app/components/document-list/filter-editor/filter-editor.component.html + 58 + + Zresetuj filtry + + + Not assigned + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts + 166 + + Filter drop down element to filter for documents with no correspondent/type/tag assigned + Nieprzypisane + + + Apply + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 26 + + Zastosuj + + + Last 7 days + + src/app/components/common/date-dropdown/date-dropdown.component.ts + 34 + + Ostatnie 7 dni + + + Last month + + src/app/components/common/date-dropdown/date-dropdown.component.ts + 35 + + Ostatni miesiąc + + + Last 3 months + + src/app/components/common/date-dropdown/date-dropdown.component.ts + 36 + + Ostatnie 3 miesiące + + + Last year + + src/app/components/common/date-dropdown/date-dropdown.component.ts + 37 + + Ostatni rok + + + After + + src/app/components/common/date-dropdown/date-dropdown.component.html + 13 + + Po + + + Before + + src/app/components/common/date-dropdown/date-dropdown.component.html + 38 + + Przed + + + Clear + + src/app/components/common/date-dropdown/date-dropdown.component.html + 18 + + Wyczyść + + + View + + src/app/components/document-list/document-card-large/document-card-large.component.html + 51 + + Pokaż + + + Filter by correspondent + + src/app/components/document-list/document-card-large/document-card-large.component.html + 20 + + Filtruj według nadawcy + + + Filter by tag + + src/app/components/document-list/document-card-large/document-card-large.component.html + 24 + + Filtruj po tagach + + + Score: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 86 + + Wynik: + + + Created: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Utworzony: + + + Added: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 44 + + Dodany: + + + Modified: + + src/app/components/document-list/document-card-small/document-card-small.component.html + 45 + + Zmodyfikowany: + + + Error executing bulk operation: + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 74 + + Błąd podczas wykonywania operacji zbiorczej: + + + "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 113 + + "" + + + "" and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 115 + + This is for messages like 'modify "tag1" and "tag2"' + "" i "" + + + , + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 117 + + this is used to separate enumerations and should probably be a comma and a whitespace in most languages + , + + + and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 118 + + this is for messages like 'modify "tag1", "tag2" and "tag3"' + i "" + + + Confirm tags assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 127 + + Potwierdź przypisanie tagów + + + This operation will add the tag "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 130 + + Ta operacja doda tag "" do wybranych dokumentów. + + + This operation will add the tags to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 132 + + Ta operacja doda tagi do wybranych dokumentów. + + + This operation will remove the tag "" from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 135 + + Ta operacja usunie tag "" z wybranych dokumentów. + + + This operation will remove the tags from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 137 + + Ta operacja usunie tagi z wybranych dokumentów. + + + This operation will add the tags and remove the tags on selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 139 + + Ta operacja doda tagi i usunie tagi w wybranych dokumentach. + + + Confirm correspondent assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 159 + + Potwierdź przypisanie nadawcy + + + This operation will assign the correspondent "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 161 + + Ta operacja przypisze nadawcę "" do wybranych dokumentów. + + + This operation will remove the correspondent from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 163 + + Ta operacja usunie nadawcę z wybranych dokumentów. + + + Confirm document type assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 182 + + Potwierdź przypisanie typu dokumentu + + + This operation will assign the document type "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 184 + + Ta operacja przypisze typ dokumentu "" do zaznaczonych dokumentów. + + + This operation will remove the document type from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 186 + + Ta operacja usunie typ dokumentu z wybranych dokumentów. + + + Delete confirm + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 201 + + Potwierdź Usunięcie + + + This operation will permanently delete selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 202 + + Ta operacja trwale usunie zaznaczonych dokumentów. + + + This operation cannot be undone. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 203 + + Ta czynność nie może być cofnięta. + + + Delete document(s) + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 205 + + Usuń dokument(y) + + + Select: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 10 + + Wybierz: + + + All + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 20 + + Wszystkie + + + Edit: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 27 + + Edycja: + + + Download originals + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 68 + + Pobierz oryginały + + + Suggestions: + + src/app/components/common/input/select/select.component.html + 26 + + Sugestie: + + + Save current view + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 3 + + Zapisz bieżący widok + + + Show all + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 3 + + Pokaż wszystkie + + + Statistics + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 1 + + Statystyki + + + Total documents: + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 4 + + Łącznie dokumentów: + + + Documents in inbox: + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 3 + + Dokumenty w skrzynce odbiorczej: + + + Processing: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 32 + + Przetwarzane: + + + Failed: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 35 + + Błąd: + + + Added: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 38 + + Dodano: + + + Connecting... + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 118 + + Łączenie... + + + Uploading... + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 123 + + Wysyłanie... + + + Upload complete, waiting... + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 126 + + Przesyłanie zakończone, oczekuje... + + + HTTP error: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 136 + + Błąd HTTP: + + + Upload new documents + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 1 + + Wgraj nowe dokumenty + + + Drop documents here or + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 13 + + Upuść dokumenty tutaj lub + + + Browse files + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 13 + + Wybierz pliki + + + Dismiss completed + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 4 + + This button dismisses all status messages about processed documents on the dashboard (failed and successful) + Odrzuć zakończone + + + {VAR_PLURAL, plural, =1 {One more document} other { more documents}} + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 25 + + This is shown as a summary line when there are more than 5 document in the processing pipeline. + {VAR_PLURAL, plural, one {} few {Jeszcze dokumenty} many {Jeszcze dokumentów} =1 {Jeszcze jeden dokument} other {Jeszcze dokumentów}} + + + Open document + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 45 + + Otwórz dokument + + + First steps + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 1 + + Pierwsze kroki + + + Paperless is running! :) + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 5 + + Paperless jest uruchomiony! :) + + + You can start uploading documents by dropping them in the file upload box to the right or by dropping them in the configured consumption folder and they'll start showing up in the documents list. After you've added some metadata to your documents, use the filtering mechanisms of paperless to create custom views (such as 'Recently added', 'Tagged TODO') and they will appear on the dashboard instead of this message. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 6,7 + + Możesz rozpocząć przesyłanie dokumentów, upuszczając je w polu przesyłania plików po prawej stronie lub umieszczając je w skonfigurowanym folderze przetwarzania i zaczną wyświetlać się na liście dokumentów. Po dodaniu metadanych do dokumentów użyj mechanizmów filtrowania Paperless do tworzenia niestandardowych widoków (takich jak "Ostatnio dodane", 'Otagowany TODO') i pojawią się na pulpicie zamiast tej wiadomości. + + + Paperless offers some more features that try to make your life easier: + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 8 + + Paperless oferuje więcej funkcji, które starają się ułatwić Ci życie: + + + Once you've got a couple documents in paperless and added metadata to them, paperless can assign that metadata to new documents automatically. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 10 + + Po zaimportowaniu kilku dokumentów do Paperless i przypisaniu do nich metadanych takich jak Korespondenci, Tagi i Typ dokumentu Paperless może automatycznie przypisać takie same metadane do nowych dokumentów. + + + You can configure paperless to read your mails and add documents from attached files. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 11 + + Możesz skonfigurować Paperless, aby sprawdzał Twoje konto e-mail i dodawał dokumenty z załączonych plików. + + + Consult the documentation on how to use these features. The section on basic usage also has some information on how to use paperless in general. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 13 + + Sprawdź w dokumentacji jak korzystać z tych funkcji. Sekcja o podstawowym użytkowaniu zawiera również ogólne informacje jak używać Paperless. + + + Metadata + + src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts + 18 + + Metadane + + + Select + + src/app/components/common/select-dialog/select-dialog.component.ts + 18 + + Wybierz + + + Please select an object + + src/app/components/common/select-dialog/select-dialog.component.ts + 21 + + Wybierz obiekt + + + Invalid date. + + src/app/components/common/input/date/date.component.html + 14 + + Niepoprawna data. + + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Wyszukiwanie dokumentu z ASN + + + Yes + + src/app/pipes/yes-no.pipe.ts + 9 + + Tak + + + No + + src/app/pipes/yes-no.pipe.ts + 9 + + Nie + + + (no title) + + src/app/pipes/document-title.pipe.ts + 12 + + (bez tytułu) + + + English (US) + + src/app/services/settings.service.ts + 90 + + Angielski (USA) + + + English (GB) + + src/app/services/settings.service.ts + 91 + + Angielski (Wielka Brytania) + + + German + + src/app/services/settings.service.ts + 92 + + Niemiecki + + + Dutch + + src/app/services/settings.service.ts + 93 + + Holenderski + + + French + + src/app/services/settings.service.ts + 94 + + Francuski + + + Portuguese + + src/app/services/settings.service.ts + 95 + + Portugalski + + + Portuguese (Brazil) + + src/app/services/settings.service.ts + 96 + + Portugalski (Brazylia) + + + Italian + + src/app/services/settings.service.ts + 97 + + Włoski + + + Romanian + + src/app/services/settings.service.ts + 98 + + Rumuński + + + Russian + + src/app/services/settings.service.ts + 99 + + Rosyjski + + + Spanish + + src/app/services/settings.service.ts + 100 + + Hiszpański + + + ISO 8601 + + src/app/services/settings.service.ts + 106 + + ISO 8601 + + + Document already exists. + + src/app/services/consumer-status.service.ts + 15 + + Dokument już istnieje. + + + File not found. + + src/app/services/consumer-status.service.ts + 16 + + Nie znaleziono pliku. + + + Pre-consume script does not exist. + + src/app/services/consumer-status.service.ts + 17 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Skrypt wstępnego przetwarzania nie istnieje. + + + Error while executing pre-consume script. + + src/app/services/consumer-status.service.ts + 18 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Wystąpił błąd podczas wykonywania skryptu wstępnego przetwarzania. + + + Post-consume script does not exist. + + src/app/services/consumer-status.service.ts + 19 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Skrypt przetwarzania końcowego nie istnieje. + + + Error while executing post-consume script. + + src/app/services/consumer-status.service.ts + 20 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Wystąpił błąd podczas wykonywania skryptu końcowego przetwarzania. + + + Received new file. + + src/app/services/consumer-status.service.ts + 21 + + Otrzymano nowy plik. + + + File type not supported. + + src/app/services/consumer-status.service.ts + 22 + + Ten typ pliku nie jest obsługiwany. + + + Processing document... + + src/app/services/consumer-status.service.ts + 23 + + Przetwarzanie dokumentu... + + + Generating thumbnail... + + src/app/services/consumer-status.service.ts + 24 + + Generowanie miniaturki... + + + Retrieving date from document... + + src/app/services/consumer-status.service.ts + 25 + + Pobieranie daty z dokumentu... + + + Saving document... + + src/app/services/consumer-status.service.ts + 26 + + Zapisywanie dokumentu... + + + Finished. + + src/app/services/consumer-status.service.ts + 27 + + Ukończono. + + + Error + + src/app/services/toast.service.ts + 35 + + Błąd + + + Information + + src/app/services/toast.service.ts + 39 + + Informacje + + + Correspondent + + src/app/services/rest/document.service.ts + 18 + + Korespondent + + + Document type + + src/app/services/rest/document.service.ts + 20 + + Typ dokumentu + + + Created + + src/app/services/rest/document.service.ts + 21 + + Utworzony + + + Added + + src/app/services/rest/document.service.ts + 22 + + Dodano + + + Modified + + src/app/services/rest/document.service.ts + 23 + + Zmodyfikowano + + + Create new item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 50 + + Utwórz nowy element + + + Edit item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 54 + + Edytuj element + + + Could not save element: + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 58 + + Nie można zapisać elementu: + + + Automatic + + src/app/components/manage/generic-list/generic-list.component.ts + 39 + + Automatyczny + + + Do you really want to delete this element? + + src/app/components/manage/generic-list/generic-list.component.ts + 97 + + Czy na pewno chcesz usunąć ten element? + + + Associated documents will not be deleted. + + src/app/components/manage/generic-list/generic-list.component.ts + 104 + + Powiązane dokumenty nie będą usunięte. + + + Delete + + src/app/components/manage/generic-list/generic-list.component.ts + 106 + + Usuń + + + Error while deleting element: + + src/app/components/manage/generic-list/generic-list.component.ts + 114 + + Błąd podczas usuwania elementu: + + + Any word + + src/app/data/matching-model.ts + 12 + + Dowolne słowo + + + Any: Document contains any of these words (space separated) + + src/app/data/matching-model.ts + 12 + + Dowolny: Dokument zawiera dowolne z tych słów (oddzielone spacją) + + + All words + + src/app/data/matching-model.ts + 13 + + Wszystkie słowa + + + All: Document contains all of these words (space separated) + + src/app/data/matching-model.ts + 13 + + Wszystkie: Dokument zawiera wszystkie poniższe słowa (oddzielone spacją) + + + Exact match + + src/app/data/matching-model.ts + 14 + + Dokładne dopasowanie + + + Exact: Document contains this string + + src/app/data/matching-model.ts + 14 + + Dokładne: Dokument zawiera ten ciąg znaków + + + Regular expression + + src/app/data/matching-model.ts + 15 + + Wyrażenie regularne + + + Regular expression: Document matches this regular expression + + src/app/data/matching-model.ts + 15 + + Wyrażenie regularne: Dokument pasuje do tego wyrażenia regularnego + + + Fuzzy word + + src/app/data/matching-model.ts + 16 + + Dopasowanie rozmyte + + + Fuzzy: Document contains a word similar to this word + + src/app/data/matching-model.ts + 16 + + Rozmyte: Dokument zawiera słowo podobne do tego słowa + + + Auto: Learn matching automatically + + src/app/data/matching-model.ts + 17 + + Auto: ucz się dopasowywać automatycznie + + + + diff --git a/src/locale/de_DE/LC_MESSAGES/django.po b/src/locale/de_DE/LC_MESSAGES/django.po index 125d2dc39..1e346b8af 100644 --- a/src/locale/de_DE/LC_MESSAGES/django.po +++ b/src/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: paperless-ng\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-04-05 22:05+0200\n" -"PO-Revision-Date: 2021-04-05 20:20\n" +"PO-Revision-Date: 2021-04-11 15:29\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -336,11 +336,11 @@ msgstr "Titel oder Inhalt enthält" #: documents/models.py:393 msgid "fulltext query" -msgstr "" +msgstr "Volltextsuche" #: documents/models.py:394 msgid "more like this" -msgstr "" +msgstr "Ähnliche Dokumente" #: documents/models.py:405 msgid "rule type" diff --git a/src/locale/pl_PL/LC_MESSAGES/django.po b/src/locale/pl_PL/LC_MESSAGES/django.po new file mode 100644 index 000000000..d979c8af9 --- /dev/null +++ b/src/locale/pl_PL/LC_MESSAGES/django.po @@ -0,0 +1,670 @@ +msgid "" +msgstr "" +"Project-Id-Version: paperless-ng\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"PO-Revision-Date: 2021-04-11 21:03\n" +"Last-Translator: \n" +"Language-Team: Polish\n" +"Language: pl_PL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Crowdin-Project: paperless-ng\n" +"X-Crowdin-Project-ID: 434940\n" +"X-Crowdin-Language: pl\n" +"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 54\n" + +#: documents/apps.py:10 +msgid "Documents" +msgstr "Dokumenty" + +#: documents/models.py:32 +msgid "Any word" +msgstr "Dowolne słowo" + +#: documents/models.py:33 +msgid "All words" +msgstr "Wszystkie słowa" + +#: documents/models.py:34 +msgid "Exact match" +msgstr "Dokładne dopasowanie" + +#: documents/models.py:35 +msgid "Regular expression" +msgstr "Wyrażenie regularne" + +#: documents/models.py:36 +msgid "Fuzzy word" +msgstr "Dopasowanie rozmyte" + +#: documents/models.py:37 +msgid "Automatic" +msgstr "Automatyczny" + +#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25 +#: paperless_mail/models.py:109 +msgid "name" +msgstr "nazwa" + +#: documents/models.py:45 +msgid "match" +msgstr "dopasowanie" + +#: documents/models.py:49 +msgid "matching algorithm" +msgstr "algorytm dopasowania" + +#: documents/models.py:55 +msgid "is insensitive" +msgstr "bez rozróżniania wielkości liter" + +#: documents/models.py:74 documents/models.py:120 +msgid "correspondent" +msgstr "korespondent" + +#: documents/models.py:75 +msgid "correspondents" +msgstr "korespondenci" + +#: documents/models.py:81 +msgid "color" +msgstr "kolor" + +#: documents/models.py:87 +msgid "is inbox tag" +msgstr "jest tagiem skrzynki odbiorczej" + +#: documents/models.py:89 +msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." +msgstr "Zaznacza ten tag jako tag skrzynki odbiorczej: Wszystkie nowo przetworzone dokumenty będą oznaczone tagami skrzynki odbiorczej." + +#: documents/models.py:94 +msgid "tag" +msgstr "tag" + +#: documents/models.py:95 documents/models.py:151 +msgid "tags" +msgstr "tagi" + +#: documents/models.py:101 documents/models.py:133 +msgid "document type" +msgstr "typ dokumentu" + +#: documents/models.py:102 +msgid "document types" +msgstr "typy dokumentów" + +#: documents/models.py:110 +msgid "Unencrypted" +msgstr "Niezaszyfrowane" + +#: documents/models.py:111 +msgid "Encrypted with GNU Privacy Guard" +msgstr "Zaszyfrowane przy użyciu GNU Privacy Guard" + +#: documents/models.py:124 +msgid "title" +msgstr "tytuł" + +#: documents/models.py:137 +msgid "content" +msgstr "zawartość" + +#: documents/models.py:139 +msgid "The raw, text-only data of the document. This field is primarily used for searching." +msgstr "Surowe, tekstowe dane dokumentu. To pole jest używane głównie do wyszukiwania." + +#: documents/models.py:144 +msgid "mime type" +msgstr "typ mime" + +#: documents/models.py:155 +msgid "checksum" +msgstr "suma kontrolna" + +#: documents/models.py:159 +msgid "The checksum of the original document." +msgstr "Suma kontrolna oryginalnego dokumentu." + +#: documents/models.py:163 +msgid "archive checksum" +msgstr "suma kontrolna archiwum" + +#: documents/models.py:168 +msgid "The checksum of the archived document." +msgstr "Suma kontrolna zarchiwizowanego dokumentu." + +#: documents/models.py:172 documents/models.py:328 +msgid "created" +msgstr "utworzono" + +#: documents/models.py:176 +msgid "modified" +msgstr "zmodyfikowano" + +#: documents/models.py:180 +msgid "storage type" +msgstr "typ przechowywania" + +#: documents/models.py:188 +msgid "added" +msgstr "dodano" + +#: documents/models.py:192 +msgid "filename" +msgstr "nazwa pliku" + +#: documents/models.py:198 +msgid "Current filename in storage" +msgstr "Aktualna nazwa pliku w pamięci" + +#: documents/models.py:202 +msgid "archive filename" +msgstr "nazwa pliku archiwum" + +#: documents/models.py:208 +msgid "Current archive filename in storage" +msgstr "Aktualna nazwa pliku archiwum w pamięci" + +#: documents/models.py:212 +msgid "archive serial number" +msgstr "numer seryjny archiwum" + +#: documents/models.py:217 +msgid "The position of this document in your physical document archive." +msgstr "Pozycja tego dokumentu w archiwum dokumentów fizycznych." + +#: documents/models.py:223 +msgid "document" +msgstr "dokument" + +#: documents/models.py:224 +msgid "documents" +msgstr "dokumenty" + +#: documents/models.py:311 +msgid "debug" +msgstr "debug" + +#: documents/models.py:312 +msgid "information" +msgstr "informacja" + +#: documents/models.py:313 +msgid "warning" +msgstr "ostrzeżenie" + +#: documents/models.py:314 +msgid "error" +msgstr "błąd" + +#: documents/models.py:315 +msgid "critical" +msgstr "krytyczne" + +#: documents/models.py:319 +msgid "group" +msgstr "grupa" + +#: documents/models.py:322 +msgid "message" +msgstr "wiadomość" + +#: documents/models.py:325 +msgid "level" +msgstr "poziom" + +#: documents/models.py:332 +msgid "log" +msgstr "log" + +#: documents/models.py:333 +msgid "logs" +msgstr "logi" + +#: documents/models.py:344 documents/models.py:401 +msgid "saved view" +msgstr "zapisany widok" + +#: documents/models.py:345 +msgid "saved views" +msgstr "zapisane widoki" + +#: documents/models.py:348 +msgid "user" +msgstr "użytkownik" + +#: documents/models.py:354 +msgid "show on dashboard" +msgstr "pokaż na pulpicie" + +#: documents/models.py:357 +msgid "show in sidebar" +msgstr "pokaż na pasku bocznym" + +#: documents/models.py:361 +msgid "sort field" +msgstr "pole sortowania" + +#: documents/models.py:367 +msgid "sort reverse" +msgstr "sortuj malejąco" + +#: documents/models.py:373 +msgid "title contains" +msgstr "tytuł zawiera" + +#: documents/models.py:374 +msgid "content contains" +msgstr "zawartość zawiera" + +#: documents/models.py:375 +msgid "ASN is" +msgstr "numer archiwum jest" + +#: documents/models.py:376 +msgid "correspondent is" +msgstr "korespondentem jest" + +#: documents/models.py:377 +msgid "document type is" +msgstr "typ dokumentu jest" + +#: documents/models.py:378 +msgid "is in inbox" +msgstr "jest w skrzynce odbiorczej" + +#: documents/models.py:379 +msgid "has tag" +msgstr "ma tag" + +#: documents/models.py:380 +msgid "has any tag" +msgstr "ma dowolny tag" + +#: documents/models.py:381 +msgid "created before" +msgstr "utworzony przed" + +#: documents/models.py:382 +msgid "created after" +msgstr "utworzony po" + +#: documents/models.py:383 +msgid "created year is" +msgstr "rok utworzenia to" + +#: documents/models.py:384 +msgid "created month is" +msgstr "miesiąc utworzenia to" + +#: documents/models.py:385 +msgid "created day is" +msgstr "dzień utworzenia to" + +#: documents/models.py:386 +msgid "added before" +msgstr "dodany przed" + +#: documents/models.py:387 +msgid "added after" +msgstr "dodany po" + +#: documents/models.py:388 +msgid "modified before" +msgstr "zmodyfikowany przed" + +#: documents/models.py:389 +msgid "modified after" +msgstr "zmodyfikowany po" + +#: documents/models.py:390 +msgid "does not have tag" +msgstr "nie ma tagu" + +#: documents/models.py:391 +msgid "does not have ASN" +msgstr "nie ma numeru archiwum" + +#: documents/models.py:392 +msgid "title or content contains" +msgstr "tytuł lub zawartość zawiera" + +#: documents/models.py:393 +msgid "fulltext query" +msgstr "zapytanie pełnotekstowe" + +#: documents/models.py:394 +msgid "more like this" +msgstr "podobne dokumenty" + +#: documents/models.py:405 +msgid "rule type" +msgstr "typ reguły" + +#: documents/models.py:409 +msgid "value" +msgstr "wartość" + +#: documents/models.py:415 +msgid "filter rule" +msgstr "reguła filtrowania" + +#: documents/models.py:416 +msgid "filter rules" +msgstr "reguły filtrowania" + +#: documents/serialisers.py:53 +#, python-format +msgid "Invalid regular expression: %(error)s" +msgstr "Nieprawidłowe wyrażenie regularne: %(error)s" + +#: documents/serialisers.py:177 +msgid "Invalid color." +msgstr "Nieprawidłowy kolor." + +#: documents/serialisers.py:451 +#, python-format +msgid "File type %(type)s not supported" +msgstr "Typ pliku %(type)s nie jest obsługiwany" + +#: documents/templates/index.html:21 +msgid "Paperless-ng is loading..." +msgstr "Ładowanie Paperless-ng..." + +#: documents/templates/registration/logged_out.html:13 +msgid "Paperless-ng signed out" +msgstr "Wylogowano z Paperless-ng" + +#: documents/templates/registration/logged_out.html:41 +msgid "You have been successfully logged out. Bye!" +msgstr "Poprawnie wylogowano. Do zobaczenia!" + +#: documents/templates/registration/logged_out.html:42 +msgid "Sign in again" +msgstr "Zaloguj się ponownie" + +#: documents/templates/registration/login.html:13 +msgid "Paperless-ng sign in" +msgstr "Logowanie do Paperless-ng" + +#: documents/templates/registration/login.html:42 +msgid "Please sign in." +msgstr "Proszę się zalogować." + +#: documents/templates/registration/login.html:45 +msgid "Your username and password didn't match. Please try again." +msgstr "Twoja nazwa użytkownika i hasło nie są zgodne. Spróbuj ponownie." + +#: documents/templates/registration/login.html:48 +msgid "Username" +msgstr "Użytkownik" + +#: documents/templates/registration/login.html:49 +msgid "Password" +msgstr "Hasło" + +#: documents/templates/registration/login.html:54 +msgid "Sign in" +msgstr "Zaloguj się" + +#: paperless/settings.py:298 +msgid "English (US)" +msgstr "Angielski (USA)" + +#: paperless/settings.py:299 +msgid "English (GB)" +msgstr "Angielski (Wielka Brytania)" + +#: paperless/settings.py:300 +msgid "German" +msgstr "Niemiecki" + +#: paperless/settings.py:301 +msgid "Dutch" +msgstr "Holenderski" + +#: paperless/settings.py:302 +msgid "French" +msgstr "Francuski" + +#: paperless/settings.py:303 +msgid "Portuguese (Brazil)" +msgstr "Portugalski (Brazylia)" + +#: paperless/settings.py:304 +msgid "Portuguese" +msgstr "Portugalski" + +#: paperless/settings.py:305 +msgid "Italian" +msgstr "Włoski" + +#: paperless/settings.py:306 +msgid "Romanian" +msgstr "Rumuński" + +#: paperless/settings.py:307 +msgid "Russian" +msgstr "Rosyjski" + +#: paperless/settings.py:308 +msgid "Spanish" +msgstr "Hiszpański" + +#: paperless/urls.py:113 +msgid "Paperless-ng administration" +msgstr "Administracja Paperless-ng" + +#: paperless_mail/admin.py:25 +msgid "Filter" +msgstr "Filtry" + +#: paperless_mail/admin.py:27 +msgid "Paperless will only process mails that match ALL of the filters given below." +msgstr "Paperless przetworzy tylko wiadomości pasujące do WSZYSTKICH filtrów podanych poniżej." + +#: paperless_mail/admin.py:37 +msgid "Actions" +msgstr "Akcje" + +#: paperless_mail/admin.py:39 +msgid "The action applied to the mail. This action is only performed when documents were consumed from the mail. Mails without attachments will remain entirely untouched." +msgstr "Akcja zastosowana do wiadomości. Ta akcja jest wykonywana tylko wtedy, gdy dokumenty zostały przetworzone z wiadomości. Poczta bez załączników pozostanie całkowicie niezmieniona." + +#: paperless_mail/admin.py:46 +msgid "Metadata" +msgstr "Metadane" + +#: paperless_mail/admin.py:48 +msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined." +msgstr "Przypisz metadane do dokumentów zużywanych z tej reguły automatycznie. Jeśli nie przypisujesz tutaj tagów, typów lub korespondentów, Paperless będzie nadal przetwarzał wszystkie zdefiniowane przez Ciebie reguły." + +#: paperless_mail/apps.py:9 +msgid "Paperless mail" +msgstr "Poczta Paperless" + +#: paperless_mail/models.py:11 +msgid "mail account" +msgstr "konto pocztowe" + +#: paperless_mail/models.py:12 +msgid "mail accounts" +msgstr "konta pocztowe" + +#: paperless_mail/models.py:19 +msgid "No encryption" +msgstr "Brak szyfrowania" + +#: paperless_mail/models.py:20 +msgid "Use SSL" +msgstr "Użyj SSL" + +#: paperless_mail/models.py:21 +msgid "Use STARTTLS" +msgstr "Użyj STARTTLS" + +#: paperless_mail/models.py:29 +msgid "IMAP server" +msgstr "Serwer IMAP" + +#: paperless_mail/models.py:33 +msgid "IMAP port" +msgstr "Port IMAP" + +#: paperless_mail/models.py:36 +msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections." +msgstr "Zwykle jest to 143 dla połączeń niezaszyfrowanych i STARTTLS oraz 993 dla połączeń SSL." + +#: paperless_mail/models.py:40 +msgid "IMAP security" +msgstr "Zabezpieczenia IMAP" + +#: paperless_mail/models.py:46 +msgid "username" +msgstr "nazwa użytkownika" + +#: paperless_mail/models.py:50 +msgid "password" +msgstr "hasło" + +#: paperless_mail/models.py:60 +msgid "mail rule" +msgstr "reguła wiadomości" + +#: paperless_mail/models.py:61 +msgid "mail rules" +msgstr "reguły wiadomości" + +#: paperless_mail/models.py:67 +msgid "Only process attachments." +msgstr "Przetwarzaj tylko załączniki." + +#: paperless_mail/models.py:68 +msgid "Process all files, including 'inline' attachments." +msgstr "Przetwarzaj wszystkie pliki, łącznie z załącznikami „inline”." + +#: paperless_mail/models.py:78 +msgid "Mark as read, don't process read mails" +msgstr "Oznacz jako przeczytane, nie przetwarzaj przeczytanych wiadomości" + +#: paperless_mail/models.py:79 +msgid "Flag the mail, don't process flagged mails" +msgstr "Oznacz wiadomość, nie przetwarzaj oznaczonych wiadomości" + +#: paperless_mail/models.py:80 +msgid "Move to specified folder" +msgstr "Przenieś do określonego folderu" + +#: paperless_mail/models.py:81 +msgid "Delete" +msgstr "Usuń" + +#: paperless_mail/models.py:88 +msgid "Use subject as title" +msgstr "Użyj tematu jako tytułu" + +#: paperless_mail/models.py:89 +msgid "Use attachment filename as title" +msgstr "Użyj nazwy pliku załącznika jako tytułu" + +#: paperless_mail/models.py:99 +msgid "Do not assign a correspondent" +msgstr "Nie przypisuj korespondenta" + +#: paperless_mail/models.py:101 +msgid "Use mail address" +msgstr "Użyj adresu e-mail" + +#: paperless_mail/models.py:103 +msgid "Use name (or mail address if not available)" +msgstr "Użyj nazwy nadawcy (lub adresu e-mail, jeśli jest niedostępna)" + +#: paperless_mail/models.py:105 +msgid "Use correspondent selected below" +msgstr "Użyj korespondenta wybranego poniżej" + +#: paperless_mail/models.py:113 +msgid "order" +msgstr "kolejność" + +#: paperless_mail/models.py:120 +msgid "account" +msgstr "konto" + +#: paperless_mail/models.py:124 +msgid "folder" +msgstr "folder" + +#: paperless_mail/models.py:128 +msgid "filter from" +msgstr "filtruj po nadawcy" + +#: paperless_mail/models.py:131 +msgid "filter subject" +msgstr "filtruj po temacie" + +#: paperless_mail/models.py:134 +msgid "filter body" +msgstr "filtruj po treści" + +#: paperless_mail/models.py:138 +msgid "filter attachment filename" +msgstr "filtruj po nazwie pliku załącznika" + +#: paperless_mail/models.py:140 +msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." +msgstr "Przetwarzaj tylko dokumenty, które całkowicie pasują do tej nazwy pliku, jeśli jest podana. Wzorce dopasowania jak *.pdf lub *faktura* są dozwolone. Wielkość liter nie jest rozróżniana." + +#: paperless_mail/models.py:146 +msgid "maximum age" +msgstr "nie starsze niż" + +#: paperless_mail/models.py:148 +msgid "Specified in days." +msgstr "dni." + +#: paperless_mail/models.py:151 +msgid "attachment type" +msgstr "typ załącznika" + +#: paperless_mail/models.py:154 +msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter." +msgstr "Załączniki typu \"inline\" zawierają osadzone obrazy, więc najlepiej połączyć tę opcję z filtrem nazwy pliku." + +#: paperless_mail/models.py:159 +msgid "action" +msgstr "akcja" + +#: paperless_mail/models.py:165 +msgid "action parameter" +msgstr "parametr akcji" + +#: paperless_mail/models.py:167 +msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action." +msgstr "Dodatkowy parametr dla akcji wybranej powyżej, tj. docelowy folder akcji \"Przenieś do określonego folderu\"." + +#: paperless_mail/models.py:173 +msgid "assign title from" +msgstr "przypisz tytuł" + +#: paperless_mail/models.py:183 +msgid "assign this tag" +msgstr "przypisz ten tag" + +#: paperless_mail/models.py:191 +msgid "assign this document type" +msgstr "przypisz ten typ dokumentu" + +#: paperless_mail/models.py:195 +msgid "assign correspondent from" +msgstr "przypisz korespondenta z" + +#: paperless_mail/models.py:205 +msgid "assign this correspondent" +msgstr "przypisz tego korespondenta" + From 07ab3e98ede6469851b6c261a281f84596b7db24 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sat, 17 Apr 2021 13:41:26 +0200 Subject: [PATCH 93/93] add pl-PL locale --- src-ui/angular.json | 3 +- src-ui/messages.xlf | 39 ++++++++++++--------- src-ui/src/app/app.module.ts | 4 ++- src-ui/src/app/services/settings.service.ts | 2 +- src/locale/en_US/LC_MESSAGES/django.po | 6 +++- src/paperless/settings.py | 3 +- 6 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src-ui/angular.json b/src-ui/angular.json index 342172931..bd269ea1e 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -25,7 +25,8 @@ "it-IT": "src/locale/messages.it_IT.xlf", "ro-RO": "src/locale/messages.ro_RO.xlf", "ru-RU": "src/locale/messages.ru_RU.xlf", - "es-ES": "src/locale/messages.es_ES.xlf" + "es-ES": "src/locale/messages.es_ES.xlf", + "pl-PL": "src/locale/messages.pl_PL.xlf" } }, "architect": { diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 6a956512f..99f959d0e 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -188,35 +188,35 @@ Confirm delete src/app/components/document-detail/document-detail.component.ts - 204 + 206 Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 205 + 207 The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 206 + 208 Delete document src/app/components/document-detail/document-detail.component.ts - 208 + 210 Error deleting document: src/app/components/document-detail/document-detail.component.ts - 215 + 217 @@ -1057,63 +1057,63 @@ Title src/app/components/document-list/filter-editor/filter-editor.component.ts - 85 + 88 Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 86 + 89 ASN src/app/components/document-list/filter-editor/filter-editor.component.ts - 87 + 90 Advanced search src/app/components/document-list/filter-editor/filter-editor.component.ts - 88 + 91 More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 91 + 94 Filter tags src/app/components/document-list/filter-editor/filter-editor.component.html - 20 + 19 Filter correspondents src/app/components/document-list/filter-editor/filter-editor.component.html - 28 + 27 Filter document types src/app/components/document-list/filter-editor/filter-editor.component.html - 35 + 34 Reset filters src/app/components/document-list/filter-editor/filter-editor.component.html - 58 + 57 @@ -1205,7 +1205,7 @@ Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 86 + 87 @@ -1411,7 +1411,7 @@ Suggestions: src/app/components/common/input/select/select.component.html - 26 + 29 @@ -1724,6 +1724,13 @@ 100 + + Polish + + src/app/services/settings.service.ts + 101 + + ISO 8601 diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index e6209a9e3..7a38d512b 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -63,6 +63,7 @@ import { LocalizedDateParserFormatter } from './utils/ngb-date-parser-formatter' import { ApiVersionInterceptor } from './interceptors/api-version.interceptor'; import { ColorSliderModule } from 'ngx-color/slider'; import { ColorComponent } from './components/common/input/color/color.component'; +import { DocumentAsnComponent } from './components/document-asn/document-asn.component'; import localeFr from '@angular/common/locales/fr'; import localeNl from '@angular/common/locales/nl'; @@ -73,7 +74,7 @@ import localeEnGb from '@angular/common/locales/en-GB'; import localeRo from '@angular/common/locales/ro'; import localeRu from '@angular/common/locales/ru'; import localeEs from '@angular/common/locales/es'; -import { DocumentAsnComponent } from './components/document-asn/document-asn.component'; +import localePl from '@angular/common/locales/pl'; registerLocaleData(localeFr) @@ -86,6 +87,7 @@ registerLocaleData(localeEnGb) registerLocaleData(localeRo) registerLocaleData(localeRu) registerLocaleData(localeEs) +registerLocaleData(localePl) @NgModule({ declarations: [ diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index ec07208dc..c8c10e930 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -98,7 +98,7 @@ export class SettingsService { {code: "ro-ro", name: $localize`Romanian`, englishName: "Romanian", dateInputFormat: "dd.mm.yyyy"}, {code: "ru-ru", name: $localize`Russian`, englishName: "Russian", dateInputFormat: "dd.mm.yyyy"}, {code: "es-es", name: $localize`Spanish`, englishName: "Spanish", dateInputFormat: "dd/mm/yyyy"}, - + {code: "pl-pl", name: $localize`Polish`, englishName: "Polish", dateInputFormat: "dd.mm.yyyy"} ] } diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index 1c7cc5977..6022286f0 100644 --- a/src/locale/en_US/LC_MESSAGES/django.po +++ b/src/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-05 22:05+0200\n" +"POT-Creation-Date: 2021-04-17 13:41+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -460,6 +460,10 @@ msgstr "" msgid "Spanish" msgstr "" +#: paperless/settings.py:309 +msgid "Polish" +msgstr "" + #: paperless/urls.py:113 msgid "Paperless-ng administration" msgstr "" diff --git a/src/paperless/settings.py b/src/paperless/settings.py index 1a033af38..94809933d 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -305,7 +305,8 @@ LANGUAGES = [ ("it-it", _("Italian")), ("ro-ro", _("Romanian")), ("ru-ru", _("Russian")), - ("es-es", _("Spanish")) + ("es-es", _("Spanish")), + ("pl-pl", _("Polish")) ] LOCALE_PATHS = [