diff --git a/docs/setup.rst b/docs/setup.rst index 5a38c3241..ed7f84885 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -154,7 +154,7 @@ Install Paperless from Docker Hub You can use any settings from the file ``paperless.conf.example`` in this file. Have a look at :ref:`configuration` to see whats available. - + .. caution:: Certain file systems such as NFS network shares don't support file system @@ -194,7 +194,7 @@ Build the docker image yourself .. code:: shell-session git clone https://github.com/jonaswinkler/paperless-ng - + The master branch always reflects the latest stable version. 2. Copy one of the ``docker-compose.*.yml`` to ``docker-compose.yml``, @@ -203,11 +203,11 @@ Build the docker image yourself 3. Follow steps 2 to 7 of :ref:`setup-docker_hub`. When asked to run ``docker-compose up -d`` to start the containers, do - + .. code:: shell-session $ docker-compose build - + before that to build the image. .. _setup-bare_metal: @@ -225,7 +225,7 @@ writing. Windows is not and will never be supported. * ``python3-pip``, optionally ``pipenv`` for package installation * ``python3-dev`` - * ``gettext`` for localization + * ``gettext`` for compiling interface translations * ``fonts-liberation`` for generating thumbnails for plain text files * ``imagemagick`` >= 6 for PDF conversion * ``optipng`` for optimizing thumbnails @@ -270,7 +270,7 @@ writing. Windows is not and will never be supported. paperless stores its data. If you like, you can point both to the same directory. * ``PAPERLESS_SECRET_KEY`` should be a random sequence of characters. It's used for authentication. Failure to do so allows third parties to forge authentication credentials. - + Many more adjustments can be made to paperless, especially the OCR part. The following options are recommended for everyone: @@ -279,7 +279,7 @@ writing. Windows is not and will never be supported. 6. Setup permissions. Create a system users under which you wish to run paperless. Ensure that these directories exist and that the user has write permissions to the following directories - + * ``/opt/paperless/media`` * ``/opt/paperless/data`` * ``/opt/paperless/consume`` @@ -295,10 +295,10 @@ writing. Windows is not and will never be supported. # This collects static files from paperless and django. python3 manage.py collectstatic --clear --no-input - + # This creates the database schema. python3 manage.py migrate - + # This creates the translation files for paperless. python3 manage.py compilemessages @@ -311,7 +311,7 @@ writing. Windows is not and will never be supported. # This collects static files from paperless and django. python3 manage.py runserver - + and pointing your browser to http://localhost:8000/. .. warning:: @@ -364,13 +364,13 @@ writing. Windows is not and will never be supported. .. code:: - + to .. code:: - + 13. Optional: Install the `jbig2enc `_ encoder. This will reduce the size of generated PDF documents. You'll most likely need to compile this by yourself, because this software has been patented until around 2017 and @@ -442,7 +442,7 @@ Migration to paperless-ng is then performed in a few simple steps: .. code:: shell-session $ docker-compose run --rm webserver document_index reindex - + This will migrate your database and create the search index. After that, paperless will take care of maintaining the index by itself. @@ -503,9 +503,9 @@ management commands as below. $ cd /path/to/paperless $ docker-compose run --rm webserver /bin/bash - + This will launch the container and initialize the PostgreSQL database. - + b) Without docker, open a shell in your virtual environment, switch to the ``src`` directory and create the database schema: @@ -515,7 +515,7 @@ management commands as below. $ pipenv shell $ cd src $ python3 manage.py migrate - + This will not copy any data yet. 4. Dump your data from SQLite: @@ -523,7 +523,7 @@ management commands as below. .. code:: shell-session $ python3 manage.py dumpdata --database=sqlite --exclude=contenttypes --exclude=auth.Permission > data.json - + 5. Load your data into PostgreSQL: .. code:: shell-session @@ -574,7 +574,7 @@ as well. Considerations for less powerful devices ######################################## -Paperless runs on Raspberry Pi. However, some things are rather slow on the Pi and +Paperless runs on Raspberry Pi. However, some things are rather slow on the Pi and configuring some options in paperless can help improve performance immensely: * Stick with SQLite to save some resources. @@ -596,15 +596,15 @@ configuring some options in paperless can help improve performance immensely: For details, refer to :ref:`configuration`. .. note:: - + Updating the :ref:`automatic matching algorithm ` takes quite a bit of time. However, the update mechanism checks if your - data has changed before doing the heavy lifting. If you experience the + data has changed before doing the heavy lifting. If you experience the algorithm taking too much cpu time, consider changing the schedule in the admin interface to daily. You can also manually invoke the task by changing the date and time of the next run to today/now. - The actual matching of the algorithm is fast and works on Raspberry Pi as + The actual matching of the algorithm is fast and works on Raspberry Pi as well as on any other device. .. _redis: https://redis.io/ diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html index a0e833c98..b09491683 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -20,7 +20,7 @@
- +
diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts index b51923c27..3481b1227 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts @@ -19,8 +19,13 @@ export class FilterableDropdownSelectionModel { items: MatchingModel[] = [] get itemsSorted(): MatchingModel[] { + // TODO: this is getting called very often return this.items.sort((a,b) => { - if (this.getNonTemporary(a.id) == ToggleableItemState.NotSelected && this.getNonTemporary(b.id) != ToggleableItemState.NotSelected) { + if (a.id == null && b.id != null) { + return -1 + } else if (a.id != null && b.id == null) { + return 1 + } else if (this.getNonTemporary(a.id) == ToggleableItemState.NotSelected && this.getNonTemporary(b.id) != ToggleableItemState.NotSelected) { return 1 } else if (this.getNonTemporary(a.id) != ToggleableItemState.NotSelected && this.getNonTemporary(b.id) == ToggleableItemState.NotSelected) { return -1 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 02a51238d..415f9d459 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 @@ -14,17 +14,20 @@ [(selectionModel)]="tagSelectionModel" (selectionModelChange)="updateRules()" [multiple]="true" + (open)="onTagsDropdownOpen()" [allowSelectNone]="true"> , 2021\n" "Language-Team: Dutch (Netherlands) (https://www.transifex.com/paperless/teams/115905/nl_NL/)\n" @@ -51,7 +51,7 @@ msgid "Automatic" msgstr "Automatisch" #: documents/models.py:41 documents/models.py:354 paperless_mail/models.py:25 -#: paperless_mail/models.py:111 +#: paperless_mail/models.py:109 msgid "name" msgstr "naam" @@ -347,6 +347,46 @@ msgstr "filterregel" msgid "filter rules" msgstr "filterregels" +#: documents/templates/index.html:20 +msgid "Paperless-ng is loading..." +msgstr "Paperless-ng is aan het laden..." + +#: documents/templates/registration/logged_out.html:13 +msgid "Paperless-ng signed out" +msgstr "Paperless-ng - afmelden" + +#: documents/templates/registration/logged_out.html:41 +msgid "You have been successfully logged out. Bye!" +msgstr "Je bent nu afgemeld. Tot later!" + +#: documents/templates/registration/logged_out.html:42 +msgid "Sign in again" +msgstr "Meld je opnieuw aan" + +#: documents/templates/registration/login.html:13 +msgid "Paperless-ng sign in" +msgstr "Paperless-ng - aanmelden" + +#: documents/templates/registration/login.html:42 +msgid "Please sign in." +msgstr "Gelieve aan te melden." + +#: documents/templates/registration/login.html:45 +msgid "Your username and password didn't match. Please try again." +msgstr "Je gebruikersnaam en wachtwoord komen niet overeen. Probeer opnieuw." + +#: documents/templates/registration/login.html:48 +msgid "Username" +msgstr "Gebruikersnaam" + +#: documents/templates/registration/login.html:49 +msgid "Password" +msgstr "Wachtwoord" + +#: documents/templates/registration/login.html:54 +msgid "Sign in" +msgstr "Aanmelden" + #: paperless/settings.py:268 msgid "English" msgstr "Engels" @@ -469,79 +509,79 @@ msgstr "email-regels" msgid "Only process attachments." msgstr "Alleen bijlagen verwerken" -#: paperless_mail/models.py:70 +#: paperless_mail/models.py:68 msgid "Process all files, including 'inline' attachments." msgstr "Verwerk alle bestanden, inclusief 'inline' bijlagen." -#: paperless_mail/models.py:80 +#: paperless_mail/models.py:78 msgid "Mark as read, don't process read mails" msgstr "Markeer als gelezen, verwerk geen gelezen mails" -#: paperless_mail/models.py:81 +#: paperless_mail/models.py:79 msgid "Flag the mail, don't process flagged mails" msgstr "Markeer de mail, verwerk geen mails met markering" -#: paperless_mail/models.py:82 +#: paperless_mail/models.py:80 msgid "Move to specified folder" msgstr "Verplaats naar gegeven map" -#: paperless_mail/models.py:83 +#: paperless_mail/models.py:81 msgid "Delete" msgstr "Verwijder" -#: paperless_mail/models.py:90 +#: paperless_mail/models.py:88 msgid "Use subject as title" msgstr "Gebruik onderwerp als titel" -#: paperless_mail/models.py:91 +#: paperless_mail/models.py:89 msgid "Use attachment filename as title" msgstr "Gebruik naam van bijlage als titel" -#: paperless_mail/models.py:101 +#: paperless_mail/models.py:99 msgid "Do not assign a correspondent" msgstr "Wijs geen correspondent toe" -#: paperless_mail/models.py:103 +#: paperless_mail/models.py:101 msgid "Use mail address" msgstr "Gebruik het email-adres" -#: paperless_mail/models.py:105 +#: paperless_mail/models.py:103 msgid "Use name (or mail address if not available)" msgstr "Gebruik de naam, en anders het email-adres" -#: paperless_mail/models.py:107 +#: paperless_mail/models.py:105 msgid "Use correspondent selected below" msgstr "Gebruik de hieronder aangeduide correspondent" -#: paperless_mail/models.py:115 +#: paperless_mail/models.py:113 msgid "order" msgstr "volgorde" -#: paperless_mail/models.py:122 +#: paperless_mail/models.py:120 msgid "account" msgstr "account" -#: paperless_mail/models.py:126 +#: paperless_mail/models.py:124 msgid "folder" msgstr "map" -#: paperless_mail/models.py:130 +#: paperless_mail/models.py:128 msgid "filter from" msgstr "filter afzender" -#: paperless_mail/models.py:133 +#: paperless_mail/models.py:131 msgid "filter subject" msgstr "filter onderwerp" -#: paperless_mail/models.py:136 +#: paperless_mail/models.py:134 msgid "filter body" msgstr "filter inhoud" -#: paperless_mail/models.py:140 +#: paperless_mail/models.py:138 msgid "filter attachment filename" msgstr "Filter bestandsnaam van bijlage" -#: paperless_mail/models.py:142 +#: 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." @@ -550,19 +590,19 @@ msgstr "" " kunt jokertekens gebruiken, zoals *.pdf of *factuur*. Dit is niet " "hoofdlettergevoelig." -#: paperless_mail/models.py:148 +#: paperless_mail/models.py:146 msgid "maximum age" msgstr "Maximale leeftijd" -#: paperless_mail/models.py:150 +#: paperless_mail/models.py:148 msgid "Specified in days." msgstr "Aangegeven in dagen" -#: paperless_mail/models.py:153 +#: paperless_mail/models.py:151 msgid "attachment type" msgstr "Type bijlage" -#: paperless_mail/models.py:156 +#: paperless_mail/models.py:154 msgid "" "Inline attachments include embedded images, so it's best to combine this " "option with a filename filter." @@ -570,15 +610,15 @@ msgstr "" "\"Inline\" bijlagen bevatten vaak ook afbeeldingen. In dit geval valt het " "aan te raden om ook een filter voor de bestandsnaam op te geven." -#: paperless_mail/models.py:161 +#: paperless_mail/models.py:159 msgid "action" msgstr "actie" -#: paperless_mail/models.py:167 +#: paperless_mail/models.py:165 msgid "action parameter" msgstr "actie parameters" -#: paperless_mail/models.py:169 +#: paperless_mail/models.py:167 msgid "" "Additional parameter for the action selected above, i.e., the target folder " "of the move to folder action." @@ -586,22 +626,22 @@ msgstr "" "Extra parameters voor de hierboven gekozen actie, met andere woorden: de " "bestemmingsmap voor de verplaats-actie." -#: paperless_mail/models.py:175 +#: paperless_mail/models.py:173 msgid "assign title from" msgstr "wijs titel toe van" -#: paperless_mail/models.py:185 +#: paperless_mail/models.py:183 msgid "assign this tag" msgstr "wijs dit etiket toe" -#: paperless_mail/models.py:193 +#: paperless_mail/models.py:191 msgid "assign this document type" msgstr "wijs dit documenttype toe" -#: paperless_mail/models.py:197 +#: paperless_mail/models.py:195 msgid "assign correspondent from" msgstr "wijs correspondent toe van" -#: paperless_mail/models.py:207 +#: paperless_mail/models.py:205 msgid "assign this correspondent" msgstr "wijs deze correspondent toe" diff --git a/src/paperless_mail/mail.py b/src/paperless_mail/mail.py index e848af28a..e1916c1dd 100644 --- a/src/paperless_mail/mail.py +++ b/src/paperless_mail/mail.py @@ -199,7 +199,7 @@ class MailAccountHandler(LoggingMixin): try: messages = M.fetch(criteria=AND(**criterias), - mark_seen=False) + mark_seen=False, charset='UTF-8') except Exception: raise MailError( f"Rule {rule}: Error while fetching folder {rule.folder}")