From 8797a58efc76fa3da7dc708fdd4899034d9abbf5 Mon Sep 17 00:00:00 2001 From: Joel Nordell Date: Mon, 22 Feb 2021 22:20:41 -0600 Subject: [PATCH 01/42] Add apple-touch-icon for iOS devices "Add to Home Screen" --- src-ui/angular.json | 2 ++ src-ui/src/apple-touch-icon.png | Bin 0 -> 6272 bytes src-ui/src/index.html | 1 + 3 files changed, 3 insertions(+) create mode 100644 src-ui/src/apple-touch-icon.png diff --git a/src-ui/angular.json b/src-ui/angular.json index a26dd8713..edf428fc7 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -36,6 +36,7 @@ "aot": true, "assets": [ "src/favicon.ico", + "src/apple-touch-icon.png", "src/assets", "src/manifest.webmanifest", { "glob": "pdf.worker.min.js", @@ -112,6 +113,7 @@ "karmaConfig": "karma.conf.js", "assets": [ "src/favicon.ico", + "src/apple-touch-icon.png", "src/assets", "src/manifest.webmanifest" ], diff --git a/src-ui/src/apple-touch-icon.png b/src-ui/src/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..46388a873d15b42999b0a173c8d33a224b80ca51 GIT binary patch literal 6272 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 literal 0 HcmV?d00001 diff --git a/src-ui/src/index.html b/src-ui/src/index.html index b05f9123b..39ecd824c 100644 --- a/src-ui/src/index.html +++ b/src-ui/src/index.html @@ -9,6 +9,7 @@ + From f397c5472c014dead0650aa82fd7df0fff18554b Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 23 Feb 2021 12:35:24 +0100 Subject: [PATCH 02/42] validation for regular expressions on matching models #605 --- src/documents/serialisers.py | 39 +++++++++++++------------- src/documents/tests/test_api.py | 37 +++++++++++++++++++++++- src/locale/en_US/LC_MESSAGES/django.po | 10 +++++-- 3 files changed, 63 insertions(+), 23 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 66736bdbf..652e5fe30 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -1,11 +1,13 @@ +import re + import magic from django.utils.text import slugify from rest_framework import serializers from rest_framework.fields import SerializerMethodField from . import bulk_edit -from .models import Correspondent, Tag, Document, Log, DocumentType, \ - SavedView, SavedViewFilterRule +from .models import Correspondent, Tag, Document, DocumentType, \ + SavedView, SavedViewFilterRule, MatchingModel from .parsers import is_mime_type_supported from django.utils.translation import gettext as _ @@ -33,16 +35,27 @@ class DynamicFieldsModelSerializer(serializers.ModelSerializer): self.fields.pop(field_name) -class CorrespondentSerializer(serializers.ModelSerializer): +class MatchingModelSerializer(serializers.ModelSerializer): document_count = serializers.IntegerField(read_only=True) - last_correspondence = serializers.DateTimeField(read_only=True) - def get_slug(self, obj): return slugify(obj.name) slug = SerializerMethodField() + def validate_match(self, match): + if 'matching_algorithm' in self.initial_data and self.initial_data['matching_algorithm'] == MatchingModel.MATCH_REGEX: # NOQA: E501 + try: + re.compile(match) + except Exception as e: + raise serializers.ValidationError(_("Invalid regular expresssion: ") + str(e)) + return match + + +class CorrespondentSerializer(MatchingModelSerializer): + + last_correspondence = serializers.DateTimeField(read_only=True) + class Meta: model = Correspondent fields = ( @@ -57,13 +70,7 @@ class CorrespondentSerializer(serializers.ModelSerializer): ) -class DocumentTypeSerializer(serializers.ModelSerializer): - - document_count = serializers.IntegerField(read_only=True) - - def get_slug(self, obj): - return slugify(obj.name) - slug = SerializerMethodField() +class DocumentTypeSerializer(MatchingModelSerializer): class Meta: model = DocumentType @@ -78,13 +85,7 @@ class DocumentTypeSerializer(serializers.ModelSerializer): ) -class TagSerializer(serializers.ModelSerializer): - - document_count = serializers.IntegerField(read_only=True) - - def get_slug(self, obj): - return slugify(obj.name) - slug = SerializerMethodField() +class TagSerializer(MatchingModelSerializer): class Meta: model = Tag diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 7486154e1..cbd10ac71 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -14,7 +14,7 @@ from rest_framework.test import APITestCase from whoosh.writing import AsyncWriter from documents import index, bulk_edit -from documents.models import Document, Correspondent, DocumentType, Tag, SavedView +from documents.models import Document, Correspondent, DocumentType, Tag, SavedView, MatchingModel from documents.tests.utils import DirectoriesMixin @@ -772,6 +772,41 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, 200) self.assertListEqual(response.data, ["test", "test2"]) + def test_invalid_regex_other_algorithm(self): + for endpoint in ['correspondents', 'tags', 'document_types']: + response = self.client.post(f"/api/{endpoint}/", { + "name": "test", + "matching_algorithm": MatchingModel.MATCH_ANY, + "match": "[" + }, format='json') + self.assertEqual(response.status_code, 201, endpoint) + + def test_invalid_regex(self): + for endpoint in ['correspondents', 'tags', 'document_types']: + response = self.client.post(f"/api/{endpoint}/", { + "name": "test", + "matching_algorithm": MatchingModel.MATCH_REGEX, + "match": "[" + }, format='json') + self.assertEqual(response.status_code, 400, endpoint) + + def test_valid_regex(self): + for endpoint in ['correspondents', 'tags', 'document_types']: + response = self.client.post(f"/api/{endpoint}/", { + "name": "test", + "matching_algorithm": MatchingModel.MATCH_REGEX, + "match": "[0-9]" + }, format='json') + self.assertEqual(response.status_code, 201, endpoint) + + def test_regex_no_algorithm(self): + for endpoint in ['correspondents', 'tags', 'document_types']: + response = self.client.post(f"/api/{endpoint}/", { + "name": "test", + "match": "[0-9]" + }, format='json') + self.assertEqual(response.status_code, 201, endpoint) + class TestBulkEdit(DirectoriesMixin, APITestCase): diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index cb31bbc8c..c234d5c2a 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-02-16 14:52+0100\n" +"POT-Creation-Date: 2021-02-23 12:30+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -346,7 +346,11 @@ msgstr "" msgid "filter rules" msgstr "" -#: documents/serialisers.py:370 +#: documents/serialisers.py:52 +msgid "Invalid regular expresssion: " +msgstr "" + +#: documents/serialisers.py:376 #, python-format msgid "File type %(type)s not supported" msgstr "" @@ -411,7 +415,7 @@ msgstr "" msgid "French" msgstr "" -#: paperless/urls.py:114 +#: paperless/urls.py:118 msgid "Paperless-ng administration" msgstr "" From 5d94a983d2da4b1e180e91ae4c9290a7ebd91eb1 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 23 Feb 2021 13:09:41 +0100 Subject: [PATCH 03/42] move codestyle checks into separate job --- .github/workflows/ci.yml | 44 ++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dbb718cc8..cb61b753b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.8 + python-version: 3.7 - name: Get pip cache dir id: pip-cache @@ -49,6 +49,39 @@ jobs: name: documentation path: docs/_build/html/ + codestyle: + runs-on: ubuntu-20.04 + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - + name: Get pip cache dir + id: pip-cache + run: | + echo "::set-output name=dir::$(pip cache dir)" + - + name: Persistent Github pip cache + uses: actions/cache@v2 + with: + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ runner.os }}-pip${{ matrix.python-version }} + - + name: Prepare tests + run: | + pip install --upgrade pipenv + pipenv install --system --dev --ignore-pipfile + - + name: Codestyle + run: | + cd src/ + pycodestyle + tests: runs-on: ubuntu-20.04 strategy: @@ -87,11 +120,6 @@ jobs: run: | cd src/ pytest - - - name: Codestyle - run: | - cd src/ - pycodestyle - name: Publish coverage results if: matrix.python-version == '3.8' @@ -130,7 +158,7 @@ jobs: path: src/documents/static/frontend/ build-release: - needs: [frontend, documentation, tests] + needs: [frontend, documentation, tests, codestyle] runs-on: ubuntu-20.04 steps: - @@ -240,7 +268,7 @@ jobs: build-docker-image: if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/ng-')) runs-on: ubuntu-latest - needs: [frontend, tests] + needs: [frontend, tests, codestyle] steps: - name: Prepare From 5ce73574c8ba1cadcac0d4450fd58479bacb17a1 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 23 Feb 2021 12:12:00 +0000 Subject: [PATCH 04/42] Apply translations in de translation completed for the source file '/src/locale/en_US/LC_MESSAGES/django.po' on the 'de' language. --- src/locale/de/LC_MESSAGES/django.po | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/locale/de/LC_MESSAGES/django.po b/src/locale/de/LC_MESSAGES/django.po index 358c9b721..d1a07d18f 100644 --- a/src/locale/de/LC_MESSAGES/django.po +++ b/src/locale/de/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-16 14:52+0100\n" +"POT-Creation-Date: 2021-02-23 12:30+0100\n" "PO-Revision-Date: 2021-02-16 18:37+0000\n" "Last-Translator: Jonas Winkler, 2021\n" "Language-Team: German (https://www.transifex.com/paperless/teams/115905/de/)\n" @@ -354,7 +354,11 @@ msgstr "Filterregel" msgid "filter rules" msgstr "Filterregeln" -#: documents/serialisers.py:370 +#: documents/serialisers.py:52 +msgid "Invalid regular expresssion: " +msgstr "Ungültiger regulärer Ausdruck:" + +#: documents/serialisers.py:376 #, python-format msgid "File type %(type)s not supported" msgstr "Dateityp %(type)s nicht unterstützt" @@ -421,7 +425,7 @@ msgstr "Niederländisch" msgid "French" msgstr "Französisch" -#: paperless/urls.py:114 +#: paperless/urls.py:118 msgid "Paperless-ng administration" msgstr "Paperless-ng Administration" From 065ff6eaf5c212bc2a19adf1abb78e1c2aab8fc3 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 23 Feb 2021 13:13:12 +0100 Subject: [PATCH 05/42] rename some steps --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb61b753b..85db2d482 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip${{ matrix.python-version }} - - name: Prepare tests + name: Install dependencies run: | pip install --upgrade pipenv pipenv install --system --dev --ignore-pipfile @@ -109,7 +109,7 @@ jobs: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip${{ matrix.python-version }} - - name: Prepare tests + name: Install dependencies run: | sudo apt-get update -qq sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript optipng From f888647b12deec0a63bd3b35a7bd3c288a10290e Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Tue, 23 Feb 2021 13:13:38 +0100 Subject: [PATCH 06/42] front end support for displaying error messages about regular expressions. --- .../correspondent-edit-dialog.component.html | 2 +- .../document-type-edit-dialog.component.html | 2 +- .../tag-list/tag-edit-dialog/tag-edit-dialog.component.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html b/src-ui/src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html index bbc2c8453..26a6dc219 100644 --- a/src-ui/src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html +++ b/src-ui/src/app/components/manage/correspondent-list/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -8,7 +8,7 @@ diff --git a/src-ui/src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html b/src-ui/src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html index fd4c3b7f0..418a5c281 100644 --- a/src-ui/src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html +++ b/src-ui/src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html @@ -20,7 +20,7 @@ - +
- + +
+ +
+
- + +
+ +
+ diff --git a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts index 27472bdc7..e21b28312 100644 --- a/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts +++ b/src-ui/src/app/components/common/date-dropdown/date-dropdown.component.ts @@ -1,7 +1,10 @@ import { formatDate } from '@angular/common'; import { Component, EventEmitter, Input, Output, OnInit, OnDestroy } from '@angular/core'; +import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; import { Subject, Subscription } from 'rxjs'; -import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; +import { debounceTime } from 'rxjs/operators'; +import { SettingsService } from 'src/app/services/settings.service'; +import { ISODateAdapter } from 'src/app/utils/ngb-iso-date-adapter'; export interface DateSelection { before?: string @@ -16,10 +19,17 @@ const LAST_YEAR = 3 @Component({ selector: 'app-date-dropdown', templateUrl: './date-dropdown.component.html', - styleUrls: ['./date-dropdown.component.scss'] + styleUrls: ['./date-dropdown.component.scss'], + providers: [ + {provide: NgbDateAdapter, useClass: ISODateAdapter}, + ] }) export class DateDropdownComponent implements OnInit, OnDestroy { + constructor(settings: SettingsService) { + this.datePlaceHolder = settings.getLocalizedDateInputFormat() + } + quickFilters = [ {id: LAST_7_DAYS, name: $localize`Last 7 days`}, {id: LAST_MONTH, name: $localize`Last month`}, @@ -27,6 +37,8 @@ export class DateDropdownComponent implements OnInit, OnDestroy { {id: LAST_YEAR, name: $localize`Last year`} ] + datePlaceHolder: string + @Input() dateBefore: string diff --git a/src-ui/src/app/utils/ngb-iso-date-adapter.ts b/src-ui/src/app/utils/ngb-iso-date-adapter.ts new file mode 100644 index 000000000..e43602a16 --- /dev/null +++ b/src-ui/src/app/utils/ngb-iso-date-adapter.ts @@ -0,0 +1,27 @@ +import { Injectable } from "@angular/core"; +import { NgbDateAdapter, NgbDateStruct } from "@ng-bootstrap/ng-bootstrap"; + +@Injectable() +export class ISODateAdapter extends NgbDateAdapter { + + fromModel(value: string | null): NgbDateStruct | null { + if (value) { + let date = new Date(value) + return { + day : date.getDate(), + month : date.getMonth() + 1, + year : date.getFullYear() + } + } else { + return null + } + } + + toModel(date: NgbDateStruct | null): string | null { + if (date) { + return date.year.toString().padStart(4, '0') + "-" + date.month.toString().padStart(2, '0') + "-" + date.day.toString().padStart(2, '0') + } else { + return null + } + } +} diff --git a/src-ui/src/app/utils/ngb-date-adapter.ts b/src-ui/src/app/utils/ngb-iso-date-time-adapter.ts similarity index 89% rename from src-ui/src/app/utils/ngb-date-adapter.ts rename to src-ui/src/app/utils/ngb-iso-date-time-adapter.ts index 19711319d..21a97a19a 100644 --- a/src-ui/src/app/utils/ngb-date-adapter.ts +++ b/src-ui/src/app/utils/ngb-iso-date-time-adapter.ts @@ -2,7 +2,7 @@ import { Injectable } from "@angular/core"; import { NgbDateAdapter, NgbDateStruct } from "@ng-bootstrap/ng-bootstrap"; @Injectable() -export class ISODateAdapter extends NgbDateAdapter { +export class ISODateTimeAdapter extends NgbDateAdapter { fromModel(value: string | null): NgbDateStruct | null { if (value) { From a5ba14e4464dbbc9e4167c98f644a7a5b34721c2 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:03:03 +0100 Subject: [PATCH 24/42] version bump --- src-ui/src/environments/environment.prod.ts | 2 +- src/paperless/version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index d170a0f02..6c97ac1cb 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -2,7 +2,7 @@ export const environment = { production: true, apiBaseUrl: "/api/", appTitle: "Paperless-ng", - version: "1.2.0", + version: "1.2.1", webSocketHost: window.location.host, webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:") }; diff --git a/src/paperless/version.py b/src/paperless/version.py index 09ac5f672..d93cd02b0 100644 --- a/src/paperless/version.py +++ b/src/paperless/version.py @@ -1 +1 @@ -__version__ = (1, 2, 0) +__version__ = (1, 2, 1) From f038bb90bb2c936064f5997bf627997056f7405d Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:03:21 +0100 Subject: [PATCH 25/42] fixes for #600 --- src-ui/src/index.html | 2 +- src/documents/templates/index.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src-ui/src/index.html b/src-ui/src/index.html index 39ecd824c..4308a6b16 100644 --- a/src-ui/src/index.html +++ b/src-ui/src/index.html @@ -9,7 +9,7 @@ - + diff --git a/src/documents/templates/index.html b/src/documents/templates/index.html index 285e48d3f..b71aaaeb6 100644 --- a/src/documents/templates/index.html +++ b/src/documents/templates/index.html @@ -15,6 +15,7 @@ + {% translate "Paperless-ng is loading..." %} From 6a64bf6fc16e5b806faf1aa5a91866913ecc6051 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:05:06 +0100 Subject: [PATCH 26/42] changelog --- docs/changelog.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index b23ca5137..d2ec7ec69 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,17 @@ Changelog ********* +paperless-ng 1.2.1 +################## + +* Added translation into Portuguese (Brazil). + +* The date input fields now respect the currently selected date format. + +* Added a fancy icon when adding paperless to the home screen on iOS devices. + +* When using regular expression matching, the regular expression is now validated before saving the tag/correspondent/type. + paperless-ng 1.2.0 ################## From 6ae65e0ab43b90122b0d94871fc912f022693149 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:21:15 +0100 Subject: [PATCH 27/42] changelog --- docs/changelog.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index d2ec7ec69..137fa2fd2 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -8,11 +8,11 @@ Changelog paperless-ng 1.2.1 ################## -* Added translation into Portuguese (Brazil). +* `Rodrigo Avelino `_ translated Paperless into Portuguese (Brazil). * The date input fields now respect the currently selected date format. -* Added a fancy icon when adding paperless to the home screen on iOS devices. +* Added a fancy icon when adding paperless to the home screen on iOS devices. Thanks to `Joel Nordell `_. * When using regular expression matching, the regular expression is now validated before saving the tag/correspondent/type. From 8465b8cfca7ca8c36c02047166bd86e50e8feabc Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:27:16 +0100 Subject: [PATCH 28/42] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 01ac30fa1..b21173ba5 100644 --- a/README.md +++ b/README.md @@ -77,9 +77,9 @@ The documentation for Paperless-ng is available on [ReadTheDocs](https://paperle # Translation -Paperless is currently available in English, German, Dutch, French, and Portuguese. Translation is coordinated at transifex: https://www.transifex.com/paperless/paperless-ng +Paperless is currently available in English, German, Dutch, French, and Portuguese. -If you want to see paperless in your own language, request that language at transifex and you can start translating after I approve the language. +There's an active translation project at transifex! 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 c22af0a7825fad1db9bc23075e06449a182e63b8 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 24 Feb 2021 18:43:39 +0000 Subject: [PATCH 29/42] Apply translations in en_GB translation completed for the source file '/src/locale/en_US/LC_MESSAGES/django.po' on the 'en_GB' language. --- src/locale/en_GB/LC_MESSAGES/django.po | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/locale/en_GB/LC_MESSAGES/django.po b/src/locale/en_GB/LC_MESSAGES/django.po index f0c5b0381..dbdd4b2a5 100644 --- a/src/locale/en_GB/LC_MESSAGES/django.po +++ b/src/locale/en_GB/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-16 14:52+0100\n" +"POT-Creation-Date: 2021-02-24 16:49+0100\n" "PO-Revision-Date: 2021-02-16 18:37+0000\n" "Last-Translator: Jonas Winkler, 2021\n" "Language-Team: English (United Kingdom) (https://www.transifex.com/paperless/teams/115905/en_GB/)\n" @@ -355,7 +355,12 @@ msgstr "filter rule" msgid "filter rules" msgstr "filter rules" -#: documents/serialisers.py:370 +#: documents/serialisers.py:52 +#, python-format +msgid "Invalid regular expresssion: %(error)s" +msgstr "Invalid regular expresssion: %(error)s" + +#: documents/serialisers.py:378 #, python-format msgid "File type %(type)s not supported" msgstr "File type %(type)s not supported" @@ -420,7 +425,11 @@ msgstr "Dutch" msgid "French" msgstr "French" -#: paperless/urls.py:114 +#: paperless/settings.py:296 +msgid "Portuguese (Brazil)" +msgstr "Portuguese (Brazil)" + +#: paperless/urls.py:118 msgid "Paperless-ng administration" msgstr "Paperless-ng administration" From 800f4deb909ee2b661e234743d1fa2fbf1698c87 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 24 Feb 2021 18:43:40 +0000 Subject: [PATCH 30/42] Translate /src-ui/messages.xlf in en_GB translation completed for the source file '/src-ui/messages.xlf' on the 'en_GB' language. --- src-ui/src/locale/messages.en_GB.xlf | 48 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src-ui/src/locale/messages.en_GB.xlf b/src-ui/src/locale/messages.en_GB.xlf index f5e711c39..b413a50a1 100644 --- a/src-ui/src/locale/messages.en_GB.xlf +++ b/src-ui/src/locale/messages.en_GB.xlf @@ -606,7 +606,7 @@ Use system language src/app/components/manage/settings/settings.component.ts - 91 + 92 @@ -614,15 +614,7 @@ Use date format of display language src/app/components/manage/settings/settings.component.ts - 96 - - - - ISO 8601 - ISO 8601 - - src/app/components/manage/settings/settings.component.ts - 97 + 98 @@ -630,7 +622,7 @@ Error while storing settings on server: src/app/components/manage/settings/settings.component.ts - 114 + 115 @@ -1832,6 +1824,14 @@ 21 + + Invalid date. + Invalid date. + + src/app/components/common/input/date/date.component.html + 13 + + Yes Yes @@ -1861,7 +1861,7 @@ English (US) src/app/services/settings.service.ts - 82 + 88 @@ -1869,7 +1869,7 @@ English (GB) src/app/services/settings.service.ts - 83 + 89 @@ -1877,7 +1877,7 @@ German src/app/services/settings.service.ts - 84 + 90 @@ -1885,7 +1885,7 @@ Dutch src/app/services/settings.service.ts - 85 + 91 @@ -1893,7 +1893,23 @@ French src/app/services/settings.service.ts - 86 + 92 + + + + Portuguese (Brazil) + Portuguese (Brazil) + + src/app/services/settings.service.ts + 93 + + + + ISO 8601 + ISO 8601 + + src/app/services/settings.service.ts + 98 From 2f2b5b90ea0812e3d9212169f4847b53b93b5f2e Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+nikonratm@users.noreply.github.com> Date: Sun, 17 Jan 2021 19:46:44 +0100 Subject: [PATCH 31/42] Dark mode compatibility --- src-ui/src/theme_dark.scss | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src-ui/src/theme_dark.scss b/src-ui/src/theme_dark.scss index 4e850f017..751ff2b15 100644 --- a/src-ui/src/theme_dark.scss +++ b/src-ui/src/theme_dark.scss @@ -246,6 +246,16 @@ $border-color-dark-mode: #47494f; } } + .btn-light:not(:disabled):not(.disabled) { + background-color: $bg-dark-mode; + color: $text-color-dark-mode-accent; + + &:hover { + background-color: $text-color-dark-mode; + color: $bg-dark-mode; + } + } + .btn-link:not(:disabled):not(.disabled) { color: $primary-dark-mode; } @@ -366,6 +376,12 @@ $border-color-dark-mode: #47494f; .progress-bar.bg-primary { background-color: darken($primary-dark-mode, 5%) !important; } + + .ngb-dp-header, + .ngb-dp-weekdays, + .ngb-dp-month { + background-color: $bg-light-dark-mode; + } } body.color-scheme-dark { From e43ab23a45e7065f8cb29417445ba00c5e33cfbd Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:29:33 +0000 Subject: [PATCH 32/42] Apply translations in fr translation completed for the source file '/src/locale/en_US/LC_MESSAGES/django.po' on the 'fr' language. --- src/locale/fr/LC_MESSAGES/django.po | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/locale/fr/LC_MESSAGES/django.po b/src/locale/fr/LC_MESSAGES/django.po index 6acd81649..3b4fbce3f 100644 --- a/src/locale/fr/LC_MESSAGES/django.po +++ b/src/locale/fr/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-23 13:20+0100\n" +"POT-Creation-Date: 2021-02-24 16:49+0100\n" "PO-Revision-Date: 2021-02-16 18:37+0000\n" "Last-Translator: Philmo67, 2021\n" "Language-Team: French (https://www.transifex.com/paperless/teams/115905/fr/)\n" @@ -428,6 +428,10 @@ msgstr "Néerlandais" msgid "French" msgstr "Français" +#: paperless/settings.py:296 +msgid "Portuguese (Brazil)" +msgstr "Portugais (Brésil)" + #: paperless/urls.py:118 msgid "Paperless-ng administration" msgstr "Administration de Paperless-ng" From d6cbea97f9b5993f12b1d1ea02fc99ca3a811587 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 24 Feb 2021 19:30:01 +0000 Subject: [PATCH 33/42] Translate /src-ui/messages.xlf in fr translation completed for the source file '/src-ui/messages.xlf' on the 'fr' language. --- src-ui/src/locale/messages.fr.xlf | 50 ++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/src-ui/src/locale/messages.fr.xlf b/src-ui/src/locale/messages.fr.xlf index 79045b3b4..05b9fdab7 100644 --- a/src-ui/src/locale/messages.fr.xlf +++ b/src-ui/src/locale/messages.fr.xlf @@ -606,7 +606,7 @@ Utiliser la langue du système src/app/components/manage/settings/settings.component.ts - 91 + 92 @@ -614,15 +614,7 @@ Utiliser le format de date de la langue d'affichage src/app/components/manage/settings/settings.component.ts - 96 - - - - ISO 8601 - ISO 8601 - - src/app/components/manage/settings/settings.component.ts - 97 + 98 @@ -630,7 +622,7 @@ Une erreur s'est produite lors de l'enregistrement des paramètres sur le serveur : src/app/components/manage/settings/settings.component.ts - 114 + 115 @@ -819,7 +811,7 @@ Document processing - Traitement de document + Traitement de documents src/app/components/manage/settings/settings.component.html 118 @@ -1832,6 +1824,14 @@ 21 + + Invalid date. + Date incorrecte. + + src/app/components/common/input/date/date.component.html + 13 + + Yes Oui @@ -1861,7 +1861,7 @@ Anglais (US) src/app/services/settings.service.ts - 82 + 88 @@ -1869,7 +1869,7 @@ Anglais (GB) src/app/services/settings.service.ts - 83 + 89 @@ -1877,7 +1877,7 @@ Allemand src/app/services/settings.service.ts - 84 + 90 @@ -1885,7 +1885,7 @@ Néerlandais src/app/services/settings.service.ts - 85 + 91 @@ -1893,7 +1893,23 @@ Français src/app/services/settings.service.ts - 86 + 92 + + + + Portuguese (Brazil) + Portugais (Brésil) + + src/app/services/settings.service.ts + 93 + + + + ISO 8601 + ISO 8601 + + src/app/services/settings.service.ts + 98 From 3d3300ac32b52b7f9d5733525c9b6cd39db1ac89 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 24 Feb 2021 22:27:43 +0100 Subject: [PATCH 34/42] add versioning support to the API --- src-ui/src/app/app.module.ts | 5 ++++ .../api-version.interceptor.spec.ts | 16 ++++++++++++ .../interceptors/api-version.interceptor.ts | 25 +++++++++++++++++++ src-ui/src/app/services/auth.interceptor.ts | 0 src-ui/src/environments/environment.prod.ts | 1 + src-ui/src/environments/environment.ts | 1 + src/paperless/settings.py | 7 ++++-- 7 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src-ui/src/app/interceptors/api-version.interceptor.spec.ts create mode 100644 src-ui/src/app/interceptors/api-version.interceptor.ts delete mode 100644 src-ui/src/app/services/auth.interceptor.ts diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 46d8df9a1..0cc42292b 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -62,6 +62,7 @@ import { CustomDatePipe } from './pipes/custom-date.pipe'; import { DateComponent } from './components/common/input/date/date.component'; import { ISODateTimeAdapter } from './utils/ngb-iso-date-time-adapter'; import { LocalizedDateParserFormatter } from './utils/ngb-date-parser-formatter'; +import { ApiVersionInterceptor } from './interceptors/api-version.interceptor'; import localeFr from '@angular/common/locales/fr'; import localeNl from '@angular/common/locales/nl'; @@ -144,6 +145,10 @@ registerLocaleData(localeEnGb) provide: HTTP_INTERCEPTORS, useClass: CsrfInterceptor, multi: true + },{ + provide: HTTP_INTERCEPTORS, + useClass: ApiVersionInterceptor, + multi: true }, FilterPipe, DocumentTitlePipe, diff --git a/src-ui/src/app/interceptors/api-version.interceptor.spec.ts b/src-ui/src/app/interceptors/api-version.interceptor.spec.ts new file mode 100644 index 000000000..7ad51f687 --- /dev/null +++ b/src-ui/src/app/interceptors/api-version.interceptor.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ApiVersionInterceptor } from './api-version.interceptor'; + +describe('ApiVersionInterceptor', () => { + beforeEach(() => TestBed.configureTestingModule({ + providers: [ + ApiVersionInterceptor + ] + })); + + it('should be created', () => { + const interceptor: ApiVersionInterceptor = TestBed.inject(ApiVersionInterceptor); + expect(interceptor).toBeTruthy(); + }); +}); diff --git a/src-ui/src/app/interceptors/api-version.interceptor.ts b/src-ui/src/app/interceptors/api-version.interceptor.ts new file mode 100644 index 000000000..95aa6ef16 --- /dev/null +++ b/src-ui/src/app/interceptors/api-version.interceptor.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { + HttpRequest, + HttpHandler, + HttpEvent, + HttpInterceptor +} from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { environment } from 'src/environments/environment'; + +@Injectable() +export class ApiVersionInterceptor implements HttpInterceptor { + + constructor() {} + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + request = request.clone({ + setHeaders: { + 'Accept': `application/json; version=${environment.apiVersion}` + } + }) + + return next.handle(request); + } +} diff --git a/src-ui/src/app/services/auth.interceptor.ts b/src-ui/src/app/services/auth.interceptor.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index 6c97ac1cb..50cf6d954 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -1,6 +1,7 @@ export const environment = { production: true, apiBaseUrl: "/api/", + apiVersion: "1", appTitle: "Paperless-ng", version: "1.2.1", webSocketHost: window.location.host, diff --git a/src-ui/src/environments/environment.ts b/src-ui/src/environments/environment.ts index b2c40e261..b0ac843d5 100644 --- a/src-ui/src/environments/environment.ts +++ b/src-ui/src/environments/environment.ts @@ -5,6 +5,7 @@ export const environment = { production: false, apiBaseUrl: "http://localhost:8000/api/", + apiVersion: "1", appTitle: "Paperless-ng", version: "DEVELOPMENT", webSocketHost: "localhost:8000", diff --git a/src/paperless/settings.py b/src/paperless/settings.py index 4c860351f..48712954c 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -112,7 +112,10 @@ REST_FRAMEWORK = { 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.TokenAuthentication' - ] + ], + 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning', + 'DEFAULT_VERSION': 'v1', + 'ALLOWED_VERSIONS': ['1', '2'] } if DEBUG: @@ -142,7 +145,7 @@ ASGI_APPLICATION = "paperless.asgi.application" STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", "/static/") -# what is this used for? +# TODO: what is this used for? TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', From 018b53db1b4b8b061ea1fcb7b99c102ab3227d83 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 25 Feb 2021 11:37:39 +0100 Subject: [PATCH 35/42] fix pt-br calendar --- src-ui/src/app/app.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 0cc42292b..cf28b1e0a 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -67,7 +67,7 @@ import { ApiVersionInterceptor } from './interceptors/api-version.interceptor'; import localeFr from '@angular/common/locales/fr'; import localeNl from '@angular/common/locales/nl'; import localeDe from '@angular/common/locales/de'; -import localePt from '@angular/common/locales/pt-PT'; +import localePt from '@angular/common/locales/pt'; import localeEnGb from '@angular/common/locales/en-GB'; registerLocaleData(localeFr) From 3872c3c49bf291f50044ad0777707dd8cd0b87f6 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Thu, 25 Feb 2021 11:42:21 +0100 Subject: [PATCH 36/42] fixes #603 --- 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 34a978fe5..5692d9f78 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 @@ -94,7 +94,7 @@  {{d.title | documentTitle}} -