From 5c1edf78cef27808e9c70158c6f432a2557bfcbf Mon Sep 17 00:00:00 2001 From: syntonym Date: Fri, 11 Jan 2019 19:22:51 +0100 Subject: [PATCH 01/47] Catches OSError on IMAP connection error When something goes wrong with the imaplib.IMAP4_SSL connection (like the host is temporarely down or the DNS does not resolve) it generates an OSError which is currently not catched and handled. Now OSErrors are translated to MailFetcherErrors which get logged and the IMAP connection is retried in the next IMAP check. Fixes #474 --- src/documents/mail.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/documents/mail.py b/src/documents/mail.py index afa1b4362..d54b387b7 100644 --- a/src/documents/mail.py +++ b/src/documents/mail.py @@ -216,7 +216,11 @@ def _get_messages(self): return r def _connect(self): - self._connection = imaplib.IMAP4_SSL(self._host, self._port) + try: + self._connection = imaplib.IMAP4_SSL(self._host, self._port) + except OSError as e: + msg = "Problem connecting to {}: {}".format(self._host, e.strerror) + raise MailFetcherError(msg) def _login(self): From 79868930f1530676ff116491328344aaab0cf4b1 Mon Sep 17 00:00:00 2001 From: CkuT Date: Mon, 21 Jan 2019 20:04:57 +0100 Subject: [PATCH 02/47] Add Cache-Control header for thumbnails This drastically optimizes admin interface loading by telling the browser to cache thumbnails. The max-age recommendation is 1 year according to rfc2616 Closes #411 --- src/documents/views.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/documents/views.py b/src/documents/views.py index 186b733a5..f72ca22b1 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -2,6 +2,7 @@ from django.views.generic import DetailView, FormView, TemplateView from django_filters.rest_framework import DjangoFilterBackend from django.conf import settings +from django.utils import cache from paperless.db import GnuPG from paperless.mixins import SessionOrBasicAuthMixin @@ -56,10 +57,12 @@ def render_to_response(self, context, **response_kwargs): } if self.kwargs["kind"] == "thumb": - return HttpResponse( + response = HttpResponse( self._get_raw_data(self.object.thumbnail_file), content_type=content_types[Document.TYPE_PNG] ) + cache.patch_cache_control(response, max_age=31536000, private=True) + return response response = HttpResponse( self._get_raw_data(self.object.source_file), From 43e71cfcaa6516dbcaf6422897463d361f66208c Mon Sep 17 00:00:00 2001 From: tsia Date: Tue, 22 Jan 2019 20:51:20 +0100 Subject: [PATCH 03/47] added fields to the correspondent and tag REST API --- src/documents/serialisers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index bd00fe466..b497a1dd0 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -7,7 +7,7 @@ class CorrespondentSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Correspondent - fields = ("id", "slug", "name") + fields = ("id", "slug", "name", "match", "matching_algorithm", "is_insensitive") class TagSerializer(serializers.HyperlinkedModelSerializer): @@ -15,7 +15,7 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Tag fields = ( - "id", "slug", "name", "colour", "match", "matching_algorithm") + "id", "slug", "name", "colour", "match", "matching_algorithm", "is_insensitive") class CorrespondentField(serializers.HyperlinkedRelatedField): From 7c7a81409641c2c8725f3e0c26cbd91cc05662d1 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Tue, 22 Jan 2019 15:18:14 -0500 Subject: [PATCH 04/47] adding information about NFS mounts and inotify --- docs/setup.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/setup.rst b/docs/setup.rst index e86fe9efe..07dd555de 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -143,6 +143,15 @@ Docker Method instructions in comments in the file. The only change that is a hard requirement is to specify where the consumption directory should mount.[#dockercomposeyml]_ + + .. caution:: + + If you are using NFS mounts for the consume directory you also need to + change the command to turn off inotify as it doesn't work with NFS + + `command: ["document_consumer", "--no-inotify"]` + + 5. Modify ``docker-compose.env`` and adapt the following environment variables: ``PAPERLESS_PASSPHRASE`` From 5e674f17afcc2d1219e235a54c1d6e74144c688d Mon Sep 17 00:00:00 2001 From: bmsleight Date: Sat, 26 Jan 2019 13:15:45 +0000 Subject: [PATCH 05/47] Add note runserver PAPERLESS_DEBUG='true' --- docs/setup.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/setup.rst b/docs/setup.rst index e86fe9efe..75bc5eb78 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -86,6 +86,7 @@ Standard (Bare Metal) You should now be able to visit your (empty) installation at `Paperless webserver`_ or whatever you chose before. You can login with the user/pass you created in #5. + If using runserver within /etc/paperless.conf make sure PAPERLESS_DEBUG="true" 7. In a separate window, change to the ``src`` directory in this repo again, but this time, you should start the consumer script with From 0509d5a3d2d4ec8a4876bbdce0f72f6d375dec44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Sat, 26 Jan 2019 14:22:21 +0100 Subject: [PATCH 06/47] Tabs are not allowed in Yaml files --- docker-compose.yml.example | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml.example b/docker-compose.yml.example index fb905832e..312467b91 100644 --- a/docker-compose.yml.example +++ b/docker-compose.yml.example @@ -17,9 +17,9 @@ services: volumes: - data:/usr/src/paperless/data - media:/usr/src/paperless/media - # You have to adapt the local path you want the consumption + # You have to adapt the local path you want the consumption # directory to mount to by modifying the part before the ':'. - - ./consume:/consume + - ./consume:/consume env_file: docker-compose.env # The reason the line is here is so that the webserver that doesn't do # any text recognition and doesn't have to install unnecessary @@ -40,7 +40,7 @@ services: - data:/usr/src/paperless/data - media:/usr/src/paperless/media # This should be set to the same value as the consume directory - # in the webserver service above. + # in the webserver service above. - ./consume:/consume # Likewise, you can add a local path to mount a directory for # exporting. This is not strictly needed for paperless to From 25e953bbf0dbd25e7134661fe896bcdcae3d5f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Sat, 26 Jan 2019 14:33:51 +0100 Subject: [PATCH 07/47] Install psycopg2 in the Docker container --- Pipfile | 1 + Pipfile.lock | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Pipfile b/Pipfile index 47b4c8663..7cf7db7e6 100644 --- a/Pipfile +++ b/Pipfile @@ -34,6 +34,7 @@ pytest-django = "*" pytest-sugar = "*" pytest-env = "*" pytest-xdist = "*" +psycopg2 = "*" [dev-packages] ipython = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 5cbeecc69..395688203 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -365,6 +365,41 @@ ], "version": "==0.8.0" }, + "psycopg2": { + "hashes": [ + "sha256:10e391687b171878181e71736d0effe3772314a339d9ae30995ec8171a0c834e", + "sha256:1283f9d45e458c2dcb15ba89367923563f90ef636fe78ee22df75183484a0237", + "sha256:1a9c32e4d140bea225f9821d993b2e53c913e717ea97b851246aa9b300095d8f", + "sha256:1be6f2438d2b71fec7b07c3c0949dd321b04349c382907ea76b36120edec8300", + "sha256:20ca6f29e118b8dd7133e8708b3fba2881e70a4e0841f874ed23985b7201a076", + "sha256:227c115b3c1f65d61385e51ac690b91b584640aefb45bffacd4bd33d02ed7221", + "sha256:27959abe64ca1fc6d8cd11a71a1f421d8287831a3262bd4cacd43bbf43cc3c82", + "sha256:2b2daf1fe30a58300542aea679fd87d1e1c2afd36e7644837b7954fa2dbacb92", + "sha256:36e51a51f295fdf67bcf05e7b1877011a6b39e6622b0013fe31c5025241873a3", + "sha256:3992b9b914f2eb77dc07e8045d2ca979e491612808bc5c7cd68f307469acf9f6", + "sha256:39a11de2335ad45ececed43ab851d36a4c52843d756471b940804f301792781e", + "sha256:3c2afe9ef0d1649005e3ccf93c1aaccd6f8ee379530e763d3b3b77f406b7c0ae", + "sha256:3fb18e0e52807fe3a300dc1b5421aa492d5e759550918f597d61863419482535", + "sha256:55eab94de96ee9702f23283e9c8b03cfdb0001e2b14d5d2e1bd5ff8114b96b9f", + "sha256:7e95c0ab7e7e6e452586f35d4d8966b1e924c8dd2c23977e3ea4968770ff1d26", + "sha256:7f47514dbddf604f196fcfe5da955537f04691bef8124aff5632316a78d992b7", + "sha256:8345370356bb4bddf93acbcfd0357163dd6b09471937adcfb38a2fbb49bdce53", + "sha256:8bc6ecb220c0b88d3742042013129c817c44459795c97e9ce1bca70a3f37a53b", + "sha256:8df623f248be15d1725faf5f333791678775047f12f17a90d29b5d22573f5cdc", + "sha256:9645f1305e4268cc0fc88c823cd6c91de27c003e183c233a6a230e5e963039ee", + "sha256:a68719ed5be8373dd72c9e45d55f7a202285e05a2e392eaa8872a67ea47d7d20", + "sha256:aca0edf062ec09e954fdf0cc93d3a872362701210983a1442549e703aedec25d", + "sha256:b0dd2114d93d8f424bb8ae76e0dc540f104b70ca9163172c05e7700b1459d4c9", + "sha256:b2c09359d6802279efb9efb3f91a9c94567151baee95175f9b637ea628f35244", + "sha256:ca7bc37b1efb7cc25271bf10f398462ed975d95259af1406d38fcb268466e34f", + "sha256:e64235d9013ebf6319cb9654e08f5066112c34d8c4cc41186254ab9c3d6d5b9b", + "sha256:ec9be679c0065667503851141c31fa699e1cc69ded3ba8e5d3673dd5a6eb1370", + "sha256:eca00d0f91fcb44d88b12f1fd16ad138e38fa07debb79587e2b7ff1fe80d72b9", + "sha256:f256e807b8b2b45b6af60d7f2bb5194aab2f4acc861241c4d8ef942a55f5030d", + "sha256:fce7612a3bd6a7ba95799f88285653bf130bd7ca066b52674d5f850108b2aec0" + ], + "version": "==0.8.0" + }, "py": { "hashes": [ "sha256:bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694", From 4efb153e866c62cbac056471de62b0545a083891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Sat, 26 Jan 2019 22:10:13 +0100 Subject: [PATCH 08/47] Add and configure DjangoQL --- Pipfile | 1 + Pipfile.lock | 14 ++++++++++++++ requirements.txt | 1 + src/documents/admin.py | 3 ++- src/paperless/settings.py | 2 +- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Pipfile b/Pipfile index 47b4c8663..ccb577812 100644 --- a/Pipfile +++ b/Pipfile @@ -34,6 +34,7 @@ pytest-django = "*" pytest-sugar = "*" pytest-env = "*" pytest-xdist = "*" +djangoql = "*" [dev-packages] ipython = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 5cbeecc69..c3492b434 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -155,6 +155,13 @@ "index": "pypi", "version": "==2.0.0" }, + "djangoql": { + "hashes": [ + "sha256:7c488ec4e3362e5389ba3c1169d1ff9a27c4222601f32c6dbf6130ce04330d76" + ], + "index": "pypi", + "version": "==0.12.3" + }, "djangorestframework": { "hashes": [ "sha256:607865b0bb1598b153793892101d881466bd5a991de12bd6229abb18b1c86136", @@ -365,6 +372,13 @@ ], "version": "==0.8.0" }, + "ply": { + "hashes": [ + "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", + "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce" + ], + "version": "==3.11" + }, "py": { "hashes": [ "sha256:bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694", diff --git a/requirements.txt b/requirements.txt index d30cbf078..360ad310f 100755 --- a/requirements.txt +++ b/requirements.txt @@ -19,6 +19,7 @@ django==2.0.9 djangorestframework==3.9.0 docopt==0.6.2 docutils==0.14 +djangoql==0.12.3 execnet==1.5.0 factory-boy==2.11.1 faker==0.9.2 diff --git a/src/documents/admin.py b/src/documents/admin.py index ff0365a53..a7c9e828e 100644 --- a/src/documents/admin.py +++ b/src/documents/admin.py @@ -11,6 +11,7 @@ from django.utils.html import format_html, format_html_join from django.utils.http import urlquote from django.utils.safestring import mark_safe +from djangoql.admin import DjangoQLSearchMixin from documents.actions import ( add_tag_to_selected, @@ -165,7 +166,7 @@ def document_count(self, obj): document_count.admin_order_field = "document_count" -class DocumentAdmin(CommonAdmin): +class DocumentAdmin(DjangoQLSearchMixin, CommonAdmin): class Media: css = { diff --git a/src/paperless/settings.py b/src/paperless/settings.py index cb8851f62..cd12ad2f0 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -83,7 +83,7 @@ def __get_boolean(key, default="NO"): "rest_framework", "crispy_forms", "django_filters", - + "djangoql", ] if os.getenv("PAPERLESS_INSTALLED_APPS"): From 97f1e4ab16fc035242655051fc7d1de94dbb34f3 Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 12:52:15 +0000 Subject: [PATCH 09/47] pep8 --- src/documents/serialisers.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index b497a1dd0..0075d4de7 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -7,7 +7,14 @@ class CorrespondentSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Correspondent - fields = ("id", "slug", "name", "match", "matching_algorithm", "is_insensitive") + fields = ( + "id", + "slug", + "name", + "match", + "matching_algorithm", + "is_insensitive" + ) class TagSerializer(serializers.HyperlinkedModelSerializer): @@ -15,7 +22,14 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Tag fields = ( - "id", "slug", "name", "colour", "match", "matching_algorithm", "is_insensitive") + "id", + "slug", + "name", + "colour", + "match", + "matching_algorithm", + "is_insensitive" + ) class CorrespondentField(serializers.HyperlinkedRelatedField): From a58a7ce0f71d7273b3cb6d64947a2a0508601cfd Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 13:03:55 +0000 Subject: [PATCH 10/47] Move note about DEBUG up into 3. --- docs/setup.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/setup.rst b/docs/setup.rst index b3550b3e9..6781bb8c0 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -77,16 +77,19 @@ Standard (Bare Metal) encrypt/decrypt the original documents. Don't worry about defining this if you don't want to use encryption (the default). + Note also that if you're using the ``runserver`` as mentioned below, you + should make sure that PAPERLESS_DEBUG="true" or is just commented out as + this is the default. + 4. Initialise the SQLite database with ``./manage.py migrate``. 5. Create a user for your Paperless instance with ``./manage.py createsuperuser``. Follow the prompts to create your user. 6. Start the webserver with ``./manage.py runserver :``. - If no specifc IP or port are given, the default is ``127.0.0.1:8000`` - also known as http://localhost:8000/. + If no specific IP or port is given, the default is ``127.0.0.1:8000`` also + known as http://localhost:8000/. You should now be able to visit your (empty) installation at `Paperless webserver`_ or whatever you chose before. You can login with the user/pass you created in #5. - If using runserver within /etc/paperless.conf make sure PAPERLESS_DEBUG="true" 7. In a separate window, change to the ``src`` directory in this repo again, but this time, you should start the consumer script with From 3c78105fd733b1a1adb072dc4316a1bf08cc2421 Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 13:05:56 +0000 Subject: [PATCH 11/47] Align example conf with real-world defaults --- paperless.conf.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paperless.conf.example b/paperless.conf.example index a86523176..aed2eee71 100644 --- a/paperless.conf.example +++ b/paperless.conf.example @@ -61,7 +61,7 @@ PAPERLESS_EMAIL_SECRET="" # Controls whether django's debug mode is enabled. Disable this on production # systems. Debug mode is enabled by default. -PAPERLESS_DEBUG="false" +#PAPERLESS_DEBUG="true" # Paperless can be instructed to attempt to encrypt your PDF files with GPG From 9f56bf9992d31a0bd5b98f15adab54d9288aa57d Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 13:46:10 +0000 Subject: [PATCH 12/47] Fix missing links --- docs/changelog.rst | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 8157dd625..b5ffece99 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,23 @@ Changelog ######### +2.7.0 +===== + +* `syntonym`_ submitted a pull request to catch IMAP connection errors `#475`_. +* `Stéphane Brunner`_ added ``psycopg2`` to the Pipfile `#489`_. He also fixed + a syntax error in ``docker-compose.yml.example`` `#488`_ and added [DjangoQL](https://github.com/ivelum/djangoql), + which allows a litany of handy search functionality `#492`_. +* `CkuT`_ and `JOKer`_ hacked out a simple, but super-helpful optimisation to + how the thumbnails are served up, improving performance considerably `#481`_. +* `tsia`_ added a few fields to the tags REST API. `#483`_. +* `Brian Cribbs`_ improved the documentation to help people using Paperless + over NFS `#484`_. +* `Brendan M. Sleight`_ updated the documentation to include a note for setting the + ``DEBUG`` value. The ``paperless.conf.example`` file was also updated to + mirror the project defaults. + + 2.6.1 ===== @@ -10,7 +27,7 @@ Changelog that using the push API will work for users of the Docker install. Thanks to `Colin Frei`_ for fixing this in `#466`_. * `khrise`_ submitted a pull request to include the ``added`` property to the - REST API `#471`. + REST API `#471`_. 2.6.0 @@ -609,6 +626,10 @@ bulk of the work on this big change. .. _Sblop: https://github.com/Sblop .. _Colin Frei: https://github.com/colinfrei .. _khrise: https://github.com/khrise +.. _syntonym: https://github.com/syntonym +.. _JOKer: https://github.com/JOKer +.. _Brian Cribbs: https://github.com/cribbstechnolog +.. _Brendan M. Sleight: https://github.com/bmsleight .. _#20: https://github.com/danielquinn/paperless/issues/20 .. _#44: https://github.com/danielquinn/paperless/issues/44 @@ -710,6 +731,13 @@ bulk of the work on this big change. .. _#442: https://github.com/danielquinn/paperless/pull/442 .. _#466: https://github.com/danielquinn/paperless/pull/466 .. _#471: https://github.com/danielquinn/paperless/pull/471 +.. _#475: https://github.com/danielquinn/paperless/pull/475 +.. _#481: https://github.com/danielquinn/paperless/pull/481 +.. _#483: https://github.com/danielquinn/paperless/pull/483 +.. _#484: https://github.com/danielquinn/paperless/pull/484 +.. _#488: https://github.com/danielquinn/paperless/pull/488 +.. _#489: https://github.com/danielquinn/paperless/pull/489 +.. _#492: https://github.com/danielquinn/paperless/pull/492 .. _pipenv: https://docs.pipenv.org/ .. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/ From 94c2950afeb5025cd6d19edffdd6ed89ec73f7b0 Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 13:48:05 +0000 Subject: [PATCH 13/47] Ignore sqlite3-journal files too --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c5cfb7cc9..957d47743 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ media/overrides.js # Sqlite database db.sqlite3 +db.sqlite3-journal # PyCharm .idea From 6d8e4ad6bf92094149e2335a8f30cb976475fe70 Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Sun, 27 Jan 2019 16:05:44 +0000 Subject: [PATCH 14/47] Fix JOKer's URL --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index b5ffece99..eebf55de7 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -627,7 +627,7 @@ bulk of the work on this big change. .. _Colin Frei: https://github.com/colinfrei .. _khrise: https://github.com/khrise .. _syntonym: https://github.com/syntonym -.. _JOKer: https://github.com/JOKer +.. _JOKer: https://github.com/MasterofJOKers .. _Brian Cribbs: https://github.com/cribbstechnolog .. _Brendan M. Sleight: https://github.com/bmsleight From 1453606350dec943af9b90a91231ad0c196a66ef Mon Sep 17 00:00:00 2001 From: bmsleight Date: Wed, 6 Feb 2019 20:37:32 +0000 Subject: [PATCH 15/47] * Docs: Add web interface screenshots --- docs/_static/Screenshot_first_logged.png | Bin 0 -> 61336 bytes docs/_static/Screenshot_first_run_login.png | Bin 0 -> 26481 bytes docs/_static/Screenshot_upload_and_scanned.png | Bin 0 -> 115989 bytes docs/index.rst | 1 + 4 files changed, 1 insertion(+) create mode 100644 docs/_static/Screenshot_first_logged.png create mode 100644 docs/_static/Screenshot_first_run_login.png create mode 100644 docs/_static/Screenshot_upload_and_scanned.png diff --git a/docs/_static/Screenshot_first_logged.png b/docs/_static/Screenshot_first_logged.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9c6072be11894c3ef2e969c16e54bf73f01b13 GIT binary patch literal 61336 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

9VD{Nc|#42Hdb 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 literal 0 HcmV?d00001 diff --git a/docs/_static/Screenshot_first_run_login.png b/docs/_static/Screenshot_first_run_login.png new file mode 100644 index 0000000000000000000000000000000000000000..d704f168229a220297e5fd97f206e0ce85596f54 GIT binary patch literal 26481 zcmeFYRahKbum;NB2>}8GclY29!2=9#!QI^kmq8Pp5FkKs3+@oyA-KD{Gq??|x08L& zeZLR)?aar=z)bh5>RKg#$qN6ZD24i#@GTr19IA{oNCgh=^)EQMf0q#d1wJwVc_IM3 zy>bzgQA0#TT-s1t2mU2+mC$lkb+B;tFm^VFvjjWXn=`wZI-8q=U922jPhYhQ!@-fm z$$&)FJkyR=y!F)Fo<+`Xl7|Q^lD-%l88y74d@uGDU)G@iZM7@sh{hbt(#XBFu6A?d z8aQ>ueQ0H*u6A)m_5qw|-@Y)S`-3Py8($`h_tPs@aui;IMikEBoiy0P*86|obs+|Z z!Mud;O+UB@Lt%Wccwi}Gk;xoH4_ z&r&E|h#-`%?;lZIPS$_&{E+}0`L9bx^shxqqkmQY4u!A(2v$U#I4EyFS#(M^MO9XIa&lsb zSD}T8uTkmsE`#ewEGmkNi_1!uv>R;u%E@$6m^kREOr%}|q4S~~AVXvb?d07rgpEt?q ze^xMp(|07t#>$Mt@|1jjSQFxb?xuQ1i6aI*o8n7S#{1R!Z5bMRr*G)LCE%d=bHnf7 zv9#3PcYfE&Tzj};HO3C@jm{?5uQQ-;%AL@yUS}wgu$$P7ZkH_~+wnB3b)xr1{m~3K zlq6*2Akg+EeC)3wLkK-HcRV6V;JSyHRuYffbic#PgAl8u3R2+5zY=2m$U=_(Hh>&4 zpo>}XzMpDNA)Wu{NB|rji8Qe{-Y#p}NlD_>WK!OH?>J zNS_b9{JXaI6*Sym$oavS@%oPVEDbd{)Bi%h(UzQOhf{a|B=cHbk8r~kv55mVh%f#l zqWRZ(woVy%rdYj1qioW~?bS5fpH)8(1y(HeA%nn*{rKsmq^nb*M|GW+WLo=8r^h=} zHP1FA7?pPN-`LqDX-?tJ(=K*RwJf_1RdG`d_=R~dstCm#m30CYBc)s@QUmPK`3O#gh zc_>V!@|Nn|FE`n|aAEj3-Cyqakr~=>Bnv*z$4$pjNmD`_k%_qf8US3|S#9WdEa?Jd zIa1*krP`W!-`3sMF%R{5X;OBZ1AFAt6znc{KbxoWuNIWCC6wRdPVQHpwgf!bQ|5%K zE~|ftlp4hLs!W~S7(5thN(7EbfG)z6r%rTyZaiBn$`E<-^YX01!#H{^gHp)!uH2r( z2|Q?c9CXh&4>Ae$K-eihR{;okijn5wO|yAl2{_$4I+uD6$9S5HTvrZmW?#(eVgyZw zzdhisWn|IVFg~qE-n>OiPSpoFZ;i0Fxa!v9A6EXT_F77b&$O$sqKyru9rH9a|NSh-lo;Er9GWVPdl*lC_*r0moi1YT~Qe)t3H)9|GE z+l+kV{5(rnL9k6#Qi;-a?cE>Qz$H?wc_9)wBV%J^A-~hmcSN;+5E&>zNWuTq`vuz0wZA~!Y1LOEjf;to>BY<=uwDx+sf*_s zNjq4|mB4FE15MAGv9Lb+xX~BoD{@qUuv6LT6T-q&zIiw-)mF_f^9ay3*y@}173^pF zx?Uw)oW4+>{&3n@JI&0e%l^?5AxHKI^Jpfr7{!h-3zraVeMc&*Aje)G!@$Q##mt`c zo;^4$ER6>ZA(TH)spZxA#)#6B&kvfm4822Ize`rOWd<7y*x2 zC+I&{Hm-g8$N7AL@?}s`b>4saQf<73lqkqtV*0I+$2>MhgRIz!%D1Zxiv=>MW=huF zuEx&Jz;H90GanBbq4KEU)8&C2Z1x~eX;E5sos6wL_;_neR7Y+*Q*zWnbh6Y$+)cQA zJ^Pm>??ZfNKqDn&`oEe~bs199u#fVbEz$C<7Dw8NYYzhx{ZwP(1-yGlu%>F5Fl;X! z&n|wmeFIS%YuEKXx54lu&js95UuWP^V;+6_&&Np#U!gk-76qtLNk(1D#i!3AyTv4R z+{=EG8LdY1!f@K!k}IDbS}?K?YNIk%_lFJI66s-`>Q=F7v)1FZKlLfKXw1goOyRb- zu-)m^+Bt&e{>jdOyzi;vOl%csbA4zU6Mliptvx;*tUcXzFfkKtZTw`t@kFX#IzBBk zP*qjM%Kc>3)oEjEt68C4eb)Bibxi#&B0?3u=))-OzA;j6KJ8GpL#>1Ot5<8o! z%fmN+6^%texQt^EW4}}E8&a>Z+V2BS%mH{Mg3RvY0Jz!0zPhJW*c@Nj==~nO2 zqNEkWNnDmjCX~uwU|+`##}tvuSsup_LbnN`m(%(&D+$`u3U%82?nJ~-n}n5T)Dkog zF3Kv#`~ys5uWF2+EZ6o6Xl!?QTwD?@^&f;^wwv=&gqD6iz|h_`#^Q}in}yG_*Y8LQ zroKS&7T~KnO#+IFno>vvIESVtc^G`z7Gz-&O5O6ZM_Fp(=l(a!rR-u7BY8U`)Jhry z;ew>Zn||jJ$puQ88GJ7J^E9`BafsaSZ6$9G%T-`vV#bTUtxtVj^qC^(@6Py5%aLRA z`nw?i;9#04z%fsOX|jx+-pa&3bS~W#P_JHZa?C89mifaZhz7*t3RwJh%4Ifh`_?NX z41GRbU0Y_h*9}P)Q>yD6 z~8JpCYo`T+>(gV)C)DpdY^#A1+h7j9R82EK99Cs{fC0$3cBC>N`}<0bUl=2 zu{p5zbRVcYYj&Nu*~;$ZkjfJsL==2}i5%$v7Cxz|rnMvNitb*@9;j~iSLiK==Kb%- zkXaPHwrXrI@5BBnY%R-jowHo($%=9Ib)MB9TZL|A1fYKczT0n{Yr9hnR$)Q>7lIZH zXsVXTUz_@kC-ja0rx{@>&Bre7oUEcEEDW)|pZV3^(R5L7Uxv?tCq$c#(Ku-p;XkzZ zu|m*6fC4dq{CgL(W3H#qK$mnN+a4ulXCjl=XR6>XX2j0qov6R;{S?VXLULMpm!8bO zM_UpHxqVrIMG)}5lO2L<3XhD8AEJhrpd}DjLBhD=aL4}di3G3^1@3hLLsUn8{y$Mg25D$;)9l9GVAOee+#Rf`^ zRaK$$JXs~PppBn|keCuf-&LU0eBv2@=b4wh_1XaaH6}h~r2|prU!45gLw>OkV>4%b z{5uj>`Cuzp=N?D1ySvvBe6wDM@*BBG-lCi*kytRPeW#hs|1qnv(fpV0UyROn$;Of> zw+_jGjwzC2duE)r691<8NV%`&^dm-^`WvXzW!Z@LuNN@t|IW8~9Juo4vv6l3-e0bt zHXuuXp#^~TtymIm9f>~w7gyleJ}d{ex<(uYjDqd0!Pa1R{&eC~aD6?N@^=nthL}nw zB22o`Rd3iwo8egX_jd6Jo0xgF1sc$gFc5h)s^EDGla6952ydMvVH2E=k3D7Z-=To>1M~P*L45Vq%n)--LJTe%^+7 z=<6RB-FvkP%aY;j%(?#$MKB=|GeAMq?sGjrb-6Ofyi^Z^DD!vKTe6BhSN>up4SxNo z+zt9YhQES>+mjI&4>YJC>wa^IkGOPv+!yssj6py^LNXV6I6JMzJv|fi@n57TTM9T7 z8JpT(8+(!?4Y=Pwjdw2QgSyw(*I}7JuqY`P+#o&*zFNQ7-C;#vk5vHz2?>c%80wke z>mSfYQz`$bNV)M~smtT0i3z8-JcZ@6g0wK%qRY;Nav)v!oK-%ucn`~p#mJc)^Dl0? z=nhlf@30x^alm=~j@ADQ+;}q7o-T@nIU?-akqaUAekWB8zy81%->1eusSAokhmC@g z?`OqCWNY*{DT(bL;r52b$xBO0jCbA|N`2+{mPnVAv$f3uG4DBV<9_!?wno3$P`W&y zN&zQt+V|#U6Yf>6H~BWCyfTY|M>y*y8>QN>E2M(g{vrd(bPMaiW|)|_zof|hJp&W| z5$zwE!Yvg4diJpmR}UpHd!ICZ3A0D(D%H6fEml9(TTOQSD9-Bg6%`Yn)bRJTw6sD(z8BjAvU!tz0{bBj)-gdrmt{-< zXL@EhI5-IJhzlz!=(79!`zLawh$4GCz}T;AxSpxEz29VU(4svcDI|rtQ#8}y9~ZT zAoKHFI{=`7O*H1fdp1VVcXf#(o!Z? zb4bQooA1N((?ht`<=%v*p>M4kgT3~R_LHH3>>y)94X3f`#Gob&B_cD$;nGbhI>OJ~ zLp8bRn+k_&jW9FHHkgSs-icnjs4ac9g0@E|0(po_n{WS>mL{6|!>x^;VB%TDeyn#H z+;2laws?d19P@%%m zTA(0`zIc4?{|Gy_t!S-#iLa}#^=&`%>&jPPP#P-^LjizO``PoMMtcGNXZZ%>tzJ-0 zjQV@8R&y!u2i`TmhjH=t^PMVv;nLbVuIkdxhZC3y;qcg4ba*(@+qX7gu%F|(NrIHC?+7eW8RLIOCIGz@NaJW?2 z>i+UY#m!Ztcy^9(Ia0)@vRseXceUojT9vI-TpD+L{7lGdTMPd8;s=8Q))AYs3j2hE ztxn&ui^PkHfjL6B^;mNUk4Ga0Aq{Ky5BiJfZt`l~LEol*L!(k;2On_|85tPlX;mE^ z9l_x84kPmH#l=Nt-MS?Ce87(6iZaKwtvTZHG0_oUbyRNk$;rxXZEX>R(9<(Bi+H(u zs;FdE^s)_)rVG5>AAFsi)kv1d#m$cl567tQ{w_^@r+Xpt@aR&%R5oGd*M50E5J&eQ zgvHUZAum0g3^52GugSPPy=tEBVFQqz-{wHU!Qmm9epQfh60m=n(ZbhDI~6U&xVXE0 zx^dEZ8yFZI+NWzm2nY!EI%Q846W)Z_;mM9ezs)+~k#X(T>PC*Qtyxyf>Q@i8%$r*R zMifSx&Kw;IJQM=U%F1}hQn)Qgi8G+BnmNd5A~TK$j~}h-mw3U;^L(gn&-aHYU4r*} zIUsB-tZJ)?Y@lS4S5V+hEYRfp;2zP#VKZHr>d>Z*9@Ny-)KH}YWMmb0pqPVt2bNbq za_VwZrp#$j)*mwDi&1Cx#kBX~dBcfvi%lE5*8I(jYv%bVHF%jA>FBtZqtlJR5!SHX z#TXZ82%}Hy0nL-`zn`Lm?-kXCoDW_nEZ()alnkDe(BipLzr~dC)anOD^Wu`ezy&?wuIPjW}O5tceyX| z?&zW^Wg52p`t?0*cQ`p`#wJ|4ZOc1X zRK$5YVcNOr=*yE@g+i;bV)2-zhmFbSb1Gbyn`rUu=d&ncndtR2#uf zHU0{4Y(Wc)Bx_*iDuFbr*v*PT`MHon-Lg8?wuRZ{11Jp^AtB+kjhhr9wuGc)@ytO; z$QuV55*)*dp$fA&P8U_o>Ft_n4V{@%eX0l_dwRZ+3*WngX1-ibDUFG2 zoHU=*EiFB{$mz4|bCQd&9k#HcRQta?Lo>XE2aRrzO{1R<1JM{58N&*Ti@g@Aho0M< zcc`KTFE%4szY%cuMn47dq#h?1WF`!l`Fq`&XF#-Hl3i{WH%zpGwCNb2viyzszLVW4pHkh1L4=S19h)vUTL zs4v`i(W1+6oQ3w&me4GW8grmsGjZFeP_g$VcJ93^IdCS?pI!81V|;3z8khu-5-3 z>>V|@xQtEPQ{1tep{Y${k$O~H)4A3+FwTpoqRbQKW3-%HXf!^V{kj>DO;xKAHUFt~ zQZ`puwZ+8JZ^9{JW&i_&D20tysH*bF(L6AoipN!JmfMnlHs#v?K3GO%E6O&Nc zMy?{u>ju>Lcbp_5CT=RMJ@(uW$jCREJOVPsQ3|O)IE59>OKwjh9vA2LVdask=nGN4 z&F&@K_SZ+}CJ3!pzwyY3$tmBCWO&%JuDPO>8Dhbq&;<89EFE3P$RP15j^IWg38=X@ zHSUn_HcbaAQ9!2wO{T(2|*IG?X9 zea}cwrHXoXoyOk5`!Swsv#hR9(HO6Q_|A%yVzL-2?xARxfz0Z%X=4>j3|cYtblos zS9I0XTmc-WH-6Pa%23cH19JCn9@-atA&%O5oQ!c3mK2Ls%sdbNXOA3P{L1k8e(vZ9 z$;Bc0p?=QLgD-t!0|TU{srzsf&xpsWbGf5wD15%H+HTl%*>w0=-G+?Os8>E!z?>r$ z?RQW_XXtl_Lx~A=LV_$aAp9y7Yt?<*7i;c6OxBD5BN^$73Vt4YQ3EfCfhstM8*mt7 z3lvHyF#W%2|1x@}%RIXFAa9Y57_3=ZikBU0{h8@|y|6oyiiL^!!;%g>XvUGQSfEiN zP`m+YD=r>1b;?tjIk86inUazMUI|PO{q_~8Alca12=d7IoONR<<<6)pELY2A&z_Aj z`|pTkT395Eqzlv+cne3@W*64XI`+9lRCA9KPR*4F``x#tK!v@`bv|J1PePfzAbvF| zrRIkQ2IqrQNc&`K)|Wcn%2m$iv9(7>eTKgL!Lq_$caeE=ZkcT&B8w_2XQp}JRTm{_ zP~42Q^ruhu1w5CZ1{>Y?86gLdv9dH{Gv-=uo4|lD20@Y|?TUJIMQ#bQ*7NfzB_d&8 ze?KYenwf;@SYbKc_+-Iw za?3EcptoX#Ix;viS*-`#=%7uLj6gypey5=n$MZz^TTDWqc~WWli9G%5=NORKmEnoAEQgVo|% zi#-p&99TdX{3o7@7d5OI>Pw`eCWiVKU7S3g(1>8Nc~o=?V-w0<&jHyZsp_!ZTp|}| z%-LNBX8B}~vht>%KXuZ%1vvF2w`nO=XrYQ^SPV3=4BiiE>_7Z~7}8BFpgiL8xP5ME zVTdmHga%jBo`0WxO2xtc1+}+%75(<{ALM)#j@8|~xfRst+yGju%a@^1k zh&pjdS6BB1SaZei;TTBn$J)=t?Cp<_>(^$-3Mv* zDHzS*q!dgGdt*X&9hu5QfQ1?0GasC_0)BCa?Y1#7Y&~TI+>45e##Z|)V1|RTKE20= zc7~B7Mn*;o8~maptL_8p@}Sy@uuymT&`MZ_ASiq{1dvJM?i(LdW07+ur_SE0ZN1 zO98a6Bx0XZ?W!*tIgd6-2>3ltq3wE7*%8Hxnpl1zIsr}z@gJ1#@_ePF@4PmKn9XQa zC(<-8>WN(6pHr$c56l-EsM+yA2USB+4rNyE-zFG{YxA9(y)Kt+d#%ht z*d#Wr0tVAXHbpvQL?p~PR{GbKTX)wD)7Uv7@A;=8rBy$hI(Q7c{VcwR^wM-o425O8 zsXb)|RO#q8N$yn2KtB{m$fd?xSG)9u4u!o}9MgHJu5HMrw{DqL*40}qm2b1YSC8SK zbXHBi{HW9w%~E(UYr1C7WJSvJM0?&TgzKS(m#E_wx2vEygRX3*s5s)!Lso95pfrc? zQch6k4x9C{wi2)9w*~7I7#FCRTNPg0tr={M)*eQ=zVJw7diOEqm{>ifz!?=*F4_f< z2NjMnef`d9Y&RNI`AT_WZz5;J!o|DXHMgDBu#-!h8r*4i{&yB2O~84Q8-$$^r>ojno?FE&q%WSb$La88qbaTG zqUCJ_l`2&mYjx9W)60bl2@-Az8eF&CmgI$%ISnJXf&E@9%CECKYAuc@x89YG z4STOefz-)!ZzFWo3s!d8zSfDp;<46B;uO5KEI8J3vwBdrRQHBHfK>aUA4fCyrYRt# zPv`j}Q3PwEdW>bM>FNQd)Brv4zV{&0KOlsi(ajvcjiskPaI_xY8x;zYFBIN9*Ketf zS&mXRejL?=UbQy~oVLJDyia!d{6?AUK@t-12nZf1fFn+B9N1*6s5iEBYQqOB73=2v9USe91|R=DmADO@m&AyGA2S+j;vXvM%)*? z@A_1#hv-_DJwI5R&lYn@2;KuO4dP&^_r6ZV$s&Gs65s1=|FR--rnV5 z7P{|Ecz}r*7!Yvep4z9_DFEcZk`X)oF;pEL9VWEfA4WGEKM+Sn`J(}Nke1e~v=>|t z4-e_DnwXdXDhUra{ub4I{QOM?mKDr*^hFm*pfV?6SYI@<`~3&E$&$UJ<=0+aY74TG zkvaM6PnvVv@d>)6-Bq9;%LiG3?W!2!_R2Id<~@&TIM57@L|tOb&^^fZUKaL9+tzC3 zodZ*{Dv$X!3GB3g1Vs~_K30hM(%C)}ENahHT$DR0OWg)rV2~s1A3rZzUC}XS;ELzf zI#P_44VQ*)hb_+*Tf`D>PPh71kgJDOO)np~Vhx08)vCziKHNRI>i^2hV&dj<0{&)g=E-=$Y$o|bm~L|PR}wR)6Ep@vDn>8RH!dS;b5zUDyH!AjZTrcGMv;0ofZz? z`G@FNT-&An-GpD`Usk#Xthg*JEK=n2-417qW^AIijx42caPaVmP~PZ|Wo~ozrrq5r zSe3qKWoF+gV^*OXOA;C>tklp6D}@KF#qmUbc9S}L_G@+krIX$JAD;I%gi3G>)ps?*-@WQ-yeTd7u->E*wUNY-PxnHk zNpZ9`!CeEZ*J-rfA8NHv_d9{3TsTp>s!Dar5~QiY^-C7j7%{SWu>)o{wZP!O6fxAj z`H54DOGwE6<@pt$V~fAoD7~&1%voD60mM}NaXRLWc&$#6+T!dikHxT6yIQfV5*?+j zIt~Urv(`t@+Oj7Vh7c{HNn+Q1D4Fo}tS(13cKh_)fP{`3FrRXD8~PqGTIhanO|x9k zb?uP>nju3m0%dl2*D|Ms?TU&oGYf zqqb3aP-T7ghO)FjF`9&j5rfn!-S?-+1YF4c{j8h5)Z(_Zn5kDtgoRlhsoEywXQop2 z7o+MUgn8{|{Sae+iL7vuhmci3UgBwNHAg%lBU5}EZ*xKeh4iPPy6BAVVGg!s@uAEr z;^3p?`iA_;kvoJ2#962P!Hf|Mq$WPtk4((TFuh(bStUb;-Zw4 zn_*rlcuN(+5Tvj=AbOrC`885ktA0lwm4Qrh9(1*wPa4!`rerJPgwrx`WTJFlWgU?;X2*NXn9=6Q@aS$@)SiU)vwB>!g?EU)=T72qg^)T(9khN8${V$ zrjU1WmgPS9gB~C?HaK{&M}0I)V8xRvCo7xbb1?uLGSFwA<1q?+=oY3rnY`>aH8OM(i>a#Z`i z_Zx(4#RFQ*EfL{t5pv@?t~%t?8Vt^pWl|A8Sr`b9+AX$toBku7uz-THUR}nFjxx4r zOKe~Im_0(Eseo&XcO_*yS)QaIhpHB5!p02M0$0QEX=T-#t1#E?Z;cZVbM_;w9HZ&PW#p9fj5GyL%k?1! zA>a5zrz?=)Lej!Dql7=*!#1k6GVLEv4oZ3@B=>9%6p!C?%%t0-`HggA$oQ?2vaz#Q zE`6X1?D*xhCAr2yff3XDJv(1kt}L#XcCWBoMJ}aW6`7=#8+UTYtU$^(EDXgaJHwq; zm2R&vx2`HCyVV`D(_Cu(uBnMX#5jb87IPxH*+Y&x_FP+gGb9KA@M0puju(P!>}IY@ zb!E^@#~Xc*o4ZX?eIbq`DtecjCaib%lvHSxn6Hw_KOEZ}hND44%?QMwbWJVYn-z`_ zYnSXn&jghV+CDzZ+XJfCM+-R`CFUI3Ns2(9h3w^$j`AyF^mtHEzZpjcbZK!BD9d4z zkG2yCSOPvgN* zLmua~@d>e4!eHxVZS5&mprYI=JCn@-%te#QK}k z+1Y588iVCXO0CUIaa0+iKm~^lPwE;3nyy`Kk=~AEd`y<`)%xtxRHJ$Z{e@ z-Ed?yN@E(k6k=Mzd3+9`f14fT`pWn5{J~ISOmVJq_H6{31U44#7!Q*{y(?1l-l$zp z3Lzr{_5#dBFcP9pG;PLR#`seoca*P_ zaz7>5mY*8$DYUyeU}BUQ4`_QgRIzi>3-Z{y?lrwig{d!?UfRJbH?wuDkGM@c%|TW3 z!^TIuuTqiK7K-?1S3ju?O~AY3XBcwx+0^;RXci46dyC6DP*LGjYE#V+Mca+WSww~- zn-8omGes)!+7NR~=nh$LD=bXtXj>^RESBj;sO~C6{TP^@;J4mCH;H5CRJ5s&rRW)- z`aUsBCB8oQ8csY(l0@((e_3hHL0Hf4(ebYF3In@TP}+(8IsMSJDHYr_pi67VzW>U?GZ++o9wQOU%3jk;*Z6G(B;=6!l4H>cc9#29Wh+5W=( z{Qgb5vHn|Gd$rS4J}776M#7xb@0P-lWr+seMobK79-p=7Qtnq$ zWx3E|d!XJg9agM4Zbcd#tV8OjHa_@kdMRsY;9`{N)E<0gEKd@IRN*6!Sipc@1sbW~ z2isYu^Po|kS>M^JXJo)-79)`Aw;PKq&9$(VPF+4T+A=Gu&_RVSuD4vW!^6JawB7&M zxl?CM*bRs7#kzE9pGru_v|S#@hiGb+>z`lhP@1@zLi5H(&$&ve1w95@TA*{~T5+i` z*}6WJcXBeT54Lj5mOS+hTRR0VT-$}0j^A~>o2uq?&kAK8)ha~h%j1n1n^5k$CkiJH(f;yzgxTK?FB`ceRizob? zPw+LM^GO$$2HXpTOiQ|OWd)2x7u9#VMjSh29+*VMag*?G#L(0Y(Y3d?Q!T9CM##Q} z$%RW7bLH+!_41sszK3GwTS^RuNyl^1H=EfTi(228nby4B%1zsT?0j_xK?s}4Qy{~| z+lTb;jo)(r^Lw0!N!b0o0{ZmJ@?`>xE>*YmyfUO=uh7X<(yf$>bDZC@6X?3a_>pGb z77VBv@mDjqj(+E(lG1~x6|`Kna}yPn5zPn>({dAQqF9kmIa+8OZOIOBqXC(O{~)!z z4YeFg9l^y;y69oV=ddKosqEX>8QXE@=H?C#4fVg>2vsbQJEAKsE`MGRMB_?9kLc-i zO3PJhZbB$g0}2#J?Qc<0lZBuOb#*MdUd4ceQ^UsEeqsKX4rS`uo5f`=koZ|!FxFdP%Q0?DM_4k&2E!@)IE8r=6P-OPb_v}Lwk z972W4UiP)gzM>E)G>bfCUk)d@BqFwR4=A5s_1!IVBU{kiHSG@2+}eb(bcE;!DEte@ zD%eVK-~N@c*HbI$a{aj#Pp!7cgb#9ICMg;6lJe%Ctb+EBtPBi{nUGyH{`B${@L1#h z!5s{GF8H!vVC!)*kCCgE!S8lZ;eRJ*XBS;UK`P{K*HDn>L=bXkJ(dCVdB-elJOre2CYJqQIvM*SVOwp-B-iS-OwW(GL3=BZ-kPK@a)HAm)ld)-3P?>=x7lw+ z6EuAswsxvW8#gmO?bi%}#ZXCgj|hs1iAhEgL%J^aCnnzbGx06JpSosvnaL<6|3b6= zm7m``^fo0OXhVgMMVMYXDHBkB4UZ7g)4?Pyx72o!kvgK&dswgp^5a=uhbxXoz!Rnw zSCH`vFL?_9lUP@ChNn(9kmyeTDc={bGc=E_jV%ox3Mv16pZrt9IGyNtHC3y^lz8Xa zuTR0XD&kQcP#iYa4oz`aB%UKoJ4`q|7FT}#3M|Bb9>o}98dgq#p#)Z~vl6y4jYq-O zvo>$bv9`OHXPEz*!^&d4xiU~SXyQ05J}T+=cKWgm_E<|`J64y}lb&$sL!W@tZx=UM zog<0viK&E=owL?2kq{KMLrZeHPn^O%0BP6bh- z&K;I0X}lv^9nvWZARo>Y$$Z`MpdvRz$C#6CnmZ}CBfk03pNN0DF?A?PcOl4@B}?h* z$u_o2$7NV;)d&jsoLM@vv83t477-D3q0j%TEvIK8h>mSRK|!p-FM7+dZB%l=1G1G} zXN8h_ZO2IIfi>4=<2N9q`^59qyK+Qtn%;_{r$wDG=4JSskspwR9nE1O4M~=J2{_Lz z;g$9NGvnJ|SojF-qR_FgcqQenuBtk-xXeKd8}u_k0OmVFi2YFs;P+C6Q3&80Zhgo& z_&*Ac9m&fo@~Im-SPRZ%%IOj+rPpaq_8E1Hz`=d|ZCzbAxZ@nHBtsp`V_VW!0QcB4 zWJnI@y4x7~J#6v6i5~*%u&*aho27Ve+`IQ7{9m@<{h9V(!HGxdlvQrNBKrsj6f2#O z!aF)hXQ}Lgd7omz4d+G{zY=ms&pYJT4Y?>@XvWcBzK3~c2xu7eR(+kneSK;>?7I8k zz)^Zs?lyM#_P_N$uYd=DgG0neMMd>$g+AS}ymR>SNljC8YJMD@ztP zlcu4eAyN69l!Wn(#^0OZ9R5x=1vY+nKK)Ax7@w)H;i`Na%p#~)gpweeC!6;*?8u#{ z&&l08HLr4F-!Ul2%5>9Yg8lFL2DtH({CwIn4FO;(i5}hE3K-x5+qgHS2|~dR4s_W+ zf0Bo*<)ge+vE@qnKK_p_-Cv@=cY1AVfp(^--S1#{vH$ou!)snCS7Sh^{3oM6{lAYs zf1!DDYF}VMe8DRXM|4%jke>0~ABVIVTpV3F|0)0+`V`%Q;aO6K_s4bHL$0eA@k{s>Rm zRPNX#Un#t>vKIVD0Kk=iU>qxJYU>}@qImVw;=On;^R2@Ze1QU0KRoO%3c>9RzB z-j_cc(qaGibcFG{KfD;(JKWhpMQoVp_@f#ibL-rHg5o*~;3+?Uacio5jyv{usN=pa z^Hl8Z2TOT=Sv)#MRbZY$EqGXI>iCg>U!ua$-Pc!gNTgdDxI_w2g!>~Rw$FpM?@C#9 zwj388oKP*6`@1V1#n+^*(&4r$>Ap1Q&6PcV2aZSXlvd3mnfbq!8**{=HetXb3E5*wzK%tf^@|55_* z_Yto1yD}VHJD-yJ^kqmJa8%bI5`k~ZvPpB z_3Y@@k?FCX2&^$`6rY(Mrx=M`@&a6bg!|)E_A2i44=N%=&V(gvQqR6ii|~AoN1NdT z_8X3^;SXE)QCp4rp%?C?&mqtiJT*4?UxK5Z|yu+~o;j4-4Dopikfd!sp%} zT^Yxdkm7M*U0C1M^JN5&_dZmzw~W)6BL#ftqjb7F^GsG7L>5D5WEIfXRnu9u@NgAo zrs}~bE5ag6BrdVBt5hTuqNJx)VTo(vJ27iDAKTbcM@;~`1zQL7MFS@`57pl$Yy}^@ z8G61L%$b4mhyj zjYUwZb{1d+{@`1f-E`^cRzIco)_pPwgK9H}1`}xv7Ros6J*45iE}#5L+VSA2mZZb*Zs`Jb%imMR@Rmk5nPb zp1iA+QJiaJVHHKUP#};38QQagYiqG$Sg3FBkxWmT*e&%tly+4M1V&4%xeWO@lyg)t zV^%hr{5tnmLZkfZAAY88g-9Gaq;P<>YWyBnyYe%YT(M=sd6(IYQ813@{kwe*YBWgF zIC-w}2a*w@)pzhRA)9=w*tvlMf zR!`q+knsr6$+5(p@N2ne=Tm4EHPCV%-=F7%_DR|=T5rOO3MzCA;^~Q;uU8hUA71c9 zS?*MY@6)%pv4@7qMrR&20*5w{^A(mWU!V^D^L@wxvK@*e#I=sIwV=P=?Vop3ihvD% zjLh47I(?qbHDl>CLUpV{e_!7XsF6LP$+1C%2@zw7hgpda$fd zpAySnm3=+kVM^CSZSC@*oqlm{eAepUl>;!T>tX-JcSd0pMm)Lw{Rwl+Wq^Pv-1HWOXsoOkN+ukz7P&8v% zku1!l=;NsF^;M05B3qnpG;&E$N8i%rL->0Ep+?jDjOHoo)~B8L%|OPGzUVOCuxKf2 z&r~r!Kebpr+Pv~sA3z}86hF5lsTsB{L+W$8rRH=}nsH8-^JG9ONSsWxRZH`lqU2LC zTLz1O9;1{0aS%Qx{7p|o`lk)|{MNs!jg@om{V^yBlhLV!KX_i6^@&!BE8$`Kbg2`h zD+$jm%YtOsy`mF~i|ZX*#_z(0+$>hqx)zN1m?V`zJfTx3AL{2QyV$N0EGXZa?8F#n zt*{)rx{zSq{dilq^=d!mlBUg3?}#2?K{rm^P#p%pd)Z zCOavNjZy`kepDnbOtD_4nZzkmKb4DGO9s>-8!XR2LwUFmQ%J(!n;#Nd+-%tG3+9cQ z+*02hpViRy-VZ;q?Q+dmhR0Bb&eKgN7vhX;JmFA9T_;&&exI60f!DGT_slUiE!f&h6Vs_xMf7eRQ7tj6;4!$;sov2 zfUq%&+e|!L$j6mJqmKp8T%ayrWe2OL;(8EB5JDvmrMyV;Ab$4;|2qpH zJy0c-J}$cHHWZq`^MC+>2Wp3|wyCT{A|Lct>fK#GjB%+f>vqnbP*c`&>;dN7&b&zH zdf@s9zG;-nI99~NAm|h?h$5-AKh28Tat|$mSp!@D<&W0>JJB&nrgV>sc$iwu^L*RZ zexTkTUv#eR%aTECiH_&%^g&;QMA)yPa~Wa@KY>QGW74N7)wiO)Kd`Vr5Ku3g(u#Gj zodFyVW$}30PY|A)KmI(k3byqC?2ig7duH&bLa_JIJG56`O7&V0gYVKwl~mt4WP5hW zZqSwu!T>JB-vROGb@pZzGc!*_s>@*RDu3H@nv4E~w_h^vd&2Y&$`m((R#SLukH6*; zlO0HuKb2@GjFDmy;5O|P#LDDIxiX1OA()`IP9HIsq;c^FhnZX%*XxVi0fBw7_r!Mi z!^-l8tc#8b6GmP)QKwh{@6r6!qy<^fE)YNUyx0Ks`d86cRb78drn&m~cR1y#B`(R` ziJDwl`++(BK+q5C=O!HoH+HPakTpmbHXz^XQ~wX+)-%a%PWrK}Hr{^1s}oYi%J5GY zDR$9^i6_e*-R|y|QDL7(NT%o_I2nLI{s()ZJ4UIcb|Wmw@#OXx78wbhhFiL5d5|m| z^?7lID7-_xhWcF!DZ^J*(;8YMqLo#1Im}lUz*vHPd()38P>?iMzYFEVR6`UWbZ?a% zzh~=87^kembb2b53?56Yv3lYGk2vtHghMO&a=ntJq-UOZ6p*|_atcj(MAx8sz5Iwy z{Zj$h8-N~gugQVfh4_K)04)N|E-K;iDRX4FX=uyZI|}U5*j!P#VCh`sBfF^Z+?0aH zQDincvvsAT;F9_@WZyhyn3Ctfk4xg#*f_dGs#2hjUP7ek!8(ifF7e^p&o1q4Ifn`S!7WHtVW14faxrslfJAyS+_y7=ag zE+UV?W+I{P)N39sj#_H>g}01jA}%lC`hKMzCI={yRS!JAuZ#ziV!X;i!rGpUGutQ0 zF`O(zzb%rCKBIlS3O>c*=Fxp&^`9%H*Zj(>2;wz}KR>S*NG+`!El}r8Gicrk)mAOX zuCM(rlh>Zab-m@_@pb4spa-vMhbdlv{_R{`tAXAmAG%cYU>FHiz_zn1vIh(7RLD|^ zp)62U+|13ij28xQsC)ydY0qh4N&6a>)mHRVg zaz78j{jsBjDSOh`No(6D&F0lZpWL>*gU6|R3!D29Wn&~@J3ThCEPLg7((6SwKFV?T z-rDXfo~<)eiEEesL5Q6fEis zw_?*fy(#O3d6nS}9=l^#+x6|j%5O!4*`;+brn|1RKyNcanuVREt)psxZbxcwO?6B&YDP=H3v>)r`Yj1|Hi0Tln@Y2mLlU&sH^0r~6qlflFcUI>>>W+Le zm(${Om1djewn=ABpOUacPD^P`&GwEr5vkvELFl`JABvC8w+aMAaQ{zx*B#Y#_T|5z z0#=-{@DoIIW)K4dSP&3|D2zISfPzQ|73n3kfDl4Z1V#ibM3Fv-0SQfNC_=Cx0z#yh z5UMdkNCJceLfSrlv-{iG-QVt+b9T?}>^Z;u^)2uF%6;$M&%O8Ed!upo_V!tboQtG;B-u=D&fK!UI_TJ^J@@yVq`&>PHE~by=daD0 zXN61lP;G#W(f%ieDfwAQeprrxNN`-9bd5oG@`;Zu<@LYxo4<@S>!;dixGX7=>g9QQ zncH5L6R#tgRmr7e4?UJ2n`O>FbnuTrbtcZFnl*9pcC0$4A3SPx{sZc)c}p?=Y0ww^ z)$XBkomXgPT0{M_ijz34lLCP#Cp(h+RyIn|_aQ~9tgPe&JL}9DS4`z(`Z_pjb;*)E z(@>YFuq-dDqbIb`51uUN6n5nZ1OX<6leq7b_N4fimhsz24d$9c9M;{%d78WZ4CWV__a%)^)W&!nte=5tE#Mo%|X}P zbo9sYU1Q30zh8P6FxftXj8RD@7z$Se!#ev6qMi%;*mTlh<_wZ3WWu}Th$jfDya_~K zjx!})8@Xr|k8&2y+*XW7(Yl^ylXh8rpnd6jYA9|`tJEm-j1t7Fm%tm`yLPoqC%jKm zGl5YYF=jseT>K*Jdwns`$Ezzfh{e7=%~x|hKMvKOuyG9I%(-lng)f$}xM{b0X^YU}l&4a`w%tX6WYncO~APX1B&~Ql4g47ODDs z**;LvVJhw8i!?0^b_SYrsva%yM(k4I?iOC@I?!I^6z#%eHOq z2J4!6Gjuvxl=Ng!xL|Of<;iQyD;qT=c#Ak-YteMXgGtq_#%ELQPAEcSa@P1oR7dA# z!=-f7a2iw5rt$MOoJHu#;K&#Avr4diHkZXUY921mm$X7JupZ{!Cy0vqbs}uf=kv-s z&cW6#pU=0(o6k|g=I1NV$(LdHAA&cFd3^Y&xVHeTy1Lnfj#gTNv{bxaeKvZkl~J&n zaiKClmDuS1-pwt=(gfX_4CgH!lP3M#1n7}U`RexBvDc=4HK9W#5wn0D$q6$clf#xi z>Rh(DP?B*h?|RV8P`T@>v=nBM{TA*GUlQygY)A)``_MhD`CM+6)>&AHkDQEM@*VGH zDf%kd9W*G($1l!Tl9EVN`LR$pB()DL08s1l%Ih4?zVNomiLLfg!Dzc-I}Ps*wGTEL zO-!++VqWIaS~2XTPC&QN3*DHNW|vVmX24>v3s*mh&J16%=<*>b^UkvnD~&}(;|ulD z3TO|h$>nV|9tPVSN7o++I1-Umqz^#wm|AJNq1%^9nx1owkS7OQ`liuCB;8ftSRhV=?NGBaiQN%nW8;F- zXjrR`k(9GCk%akG3KUM>WwifU5q`I$6OxgV1;07W&2H+#zJIQD(BG*`4qmick&Y27 zD2d6K;fSeJ6{Qf-=Uf$&pdI6vf~`zu&RM`kmzPrjp^x{{OEaCrs7nNwql&uMUyr7- z-K~=Z%hfg{CPRNUk83=fydFwCdRpd=cI6^oKZy@@S4Pr)(V18E7?V&J6W|#~9_*2V>dj4=hLr!PJCTPFu?d|)i_f!N88HU`f znBe5Cil#7OZSeT5f+nkz{(@&brH>I>P&DBIZM$S<2q%#~(%=wpzQtg1B^lfE%;$;u zUYB&vMF>J1I4u*!A68Z|^{wdPh!TE%8}_l*}0fDPlKhFmwNU-5EKd6T?Xw%n_oF`__&m z2_2Rnb=x`dyb#xGxH=||xL$iW{CfC6B?Ki(otBw@=4Iu6!$1;h{ut_~c7GIN@mnt+EvaRGGmE|bZusHgy!y6`J&=E>WjM-X&+ zqY)6skf)?!q4J84)%l}y=-f${SGzcLeSZqzYhOz zy>`C-!f!B+ngk9Ow{A`?sl$x7u}%2PelFxH;DVfctqre^LRp#!JJsan2mQzEz0Vs@ z$DxhC*9`L;|Fl-*+O^&|N&yLO(D%x%zan<6o}>;71QX%h{i*hgNZsd&y053Fr=uwC zOU(d9Azj|0>FasoY^^b0TT5HZ53bct+zsN3e~^*rI^0+9)}P-<^{HWu)`4J-*QhIg zqvRY*5))ZuhzfYU$`3WH4fhf!Bk7^{*OR-?g@tI?6aDD3BatRBMYL}itEc3CB%8iW zc`_b67#9!vJ@bhR3U5^(6HIhTvz#xDL=L8-$mWW3o~FUPc7D@BlJp?Shrd`)RT@8r zneIYF3YjfJm$8>#2#g*-kZo-`SnOQ>t5%H5HYlKNPbvqP=71P}@jVhQc z4u3J3aoZe;qt;=Ix@cA=Fe*N{khttAKWjh_1k6_p@V-N-mSWQe-$S^|>5GLSuhSXh zp59(#><`&abbpFv!)lWs0f+6G)35QfyArj^ruG+7Gn4x&Q4~CCWH%;)R-=3zXRPky z@7&KHQPKmE?0_%le{<*5N#5)TzABG*Ra}vfa%PC!)00tDsBRIzZ@4~>5J+8AR+~*N zwv7^3IIu8R#eQlu8=O;CAwK`0c*=a0)Wk~Nu zfSNN}&D^4+z5N}~RuLg@>q|OI{QOE#1cWVTm^(};Db+NqtHKO===hFMdIknYUNzL| zJSLU34{DV>#e|UFn>8#~S64GoH|TM4EXh^-MeAzoLUwnnJt|^^J4W>H6|v>n#jT9t z2D*sC?_7?r#-Yw>Z>1E z@&vNz2p=n?Nud`VEmY9)=LsF|=R5KQEoyQ(>_<+>-uM0LbZv^L$t>jy#*?wyQX+P9 zA$Ma{yB6M-on&4lzja`FIn~`vQ%I785JOLa1ADOt;ALnu`tjq(b`}!z-%=eJi0zog8)B1 zJOVT=^W2NN0TZW?$Z8hmlu6;mLrY6bdvybTEiLUDU%y|zAW?EMBqRiQEm&k|ck00R z;hANs##g@Meu4 z>m0kzw46HiA9(tIJ&OPR;*&df?b<3U>tV1V;2Lb_raDIrIt)6Sv48y=komwMawTBE z3X*#QqKZJq4luC4_yM8D1H_y=IXPuzWyKmDpxZ^y?b;OE)zwv6TAFsu!+niR3TsR# zPd&AxzrP zYJa<)fVkL>0bdF^g>$)V_ETwoT&#k9Tt)UesJ1GxBLa%{#cDR9$nEKlCb45r_&TGU z1#6ssSjmgF2vsP$`$p{cU+`70@E}VHwP;j*1N6n2+V z0H&B2t1IkY!yiybA!eLgZI+}WTTZ_b&($ddXw`tG2)o$lJcs=<5DEm8@qScC?gq}!~nHv3B7VoC14+alY52;zsPj9(5>!WJf`MxuS zyI0j>##e#ee^2gtLpnMB33VAhdIi}l5Iv#z8E?irIOwVLYnHYZ^l|4K)$3Zw1DXyG zEDGJHRWec|1!D&B@);&pCSIZuPKSc2l}Vu=DLJO@OjsELuW9BrredRmnaF+^sJ2_X zj0s>ArjTGdZ;=#%+M=IBvX-|M0@s*JCMgy!sa0WqW(#YVwG6 z7-giYpu9YAp`yji6g1>Psl6KLH#zpDMpT7z5#^Ic2kMyF23f+S`!&?v#l>v}S|MM{ zyDnEoa6i1Z^fGg`9vSI5q4n(@o}>Q_{zZf-0`FC9Q2p&wrC67Z(Dvm0>u;x5-DKB1 zKF-4irL-5RnInO$jx1t&IS6L5$WQvP+p3G}!u#6}|LFA6ov)K_pT2yu!eg-BfzVgl zgdit`dr)khFjm$qS9KJBxnQ-E!-@AsvHZqtM(kfWT|ybs!nf_(1WWC`1vNXg9R~^t zZxIh7w82l#=P)jp+sefahZQ?pTBTd6E-mHMKkmpqSK~h%^|C6eEn%xe4Z_8#Ni34) z%4Q*5O{|l29upWN3qu!$JtL84&{k$Nrc;A{(e6Q;=UB_8)qH#(*OT9t(Z57sFfR0S ztji7&7l)~Z%S(F7p#9U^C0`wKv37W@r-Ux9E-3J03F+DlI48z&gh;Pc&}R61`S|#a zQARV`X*N_+{SjOw;}NeAjS=5o6L+lpG)ufORgEE^q!WG#YKGkRcw>3#5@_xLXD5_rwq0^^i>$2Nu3c_xXw*gx(omI>{L`y9 zG6gSQc;39JONT{oHqE{G0mvE_62HkBUS2bkZ{xw7)V>4|h{a-W7;N}Wh5$mz-0bY^ z+}w{lHv!S)M%l$fA)%q6NMvW`iDPSIBG(p61GEJh8Nd&av!LMI4oPqaqRW7&0?S(y zEr5UvTuAhF0AfQ&zhJ>h%>R)F=s&k2bbg9jWLL_XS&VRs*bXg_V2e9&m> z9v<+n1-0h~s9Wa0qajDnCzMgxk2Rybq5=nkp|web9IF!OO)I!~uA?~4nE5V+&J?i1 zM04*lj_iOOFT8g%fS?=x6L*Eu71_Y%aW!^(w5eIt`)4FERZfby_-P`>p{e#pXw;4A z%<eO|T6o1HVZkSxrgQAE=B_UV131ntnH~>CEefsSyKK-rx6cY`U@Yob=lEmZ*LHnTDQ!yMu_K8N+oWr`}Bp z^#>!1R@RvzdrNJre7(s9O)C_x>pBLX$mQiUwr{H!^A@bwCcD6#M*^- zHerfiS9y8j$hld4co1W5YHE0pD0U65$o>}6*s@PwqPc}(kRuq6DR2ovGveT)DNt^i zhx8$f{jckB*_vo3$&lN43mY|GZiW$u`3w>?Oi5KtAy@N}={kx1I4$>pfcfh24FLy$ z)wig)_+!MTu?y2;#<{Z#p8a&DaIUpUbT{0^aA`o%bzV)j5vfmm(?_8=UAgiE@HJZN zrUTG{3)#K%*;B^jOg(M1NZQ6ipL?I*P?;?QRj9~F$XpX7hK=#MGfK14ObU4LzyZ67Lw4DQW`)0PNggUU$jLvw|IPfdPMWpyb&PW ztF^RJO8NtXsuNSwnsNaPdq7IG=H^p>eYLVMedf%WHJx(|n3fmP4qtn-Fx@IGC6$d4 z@rpepo}olM8n^{H{|v9axdWc)B3wb*uF7nQ365@*U}b*(<-zq8$3y3ao;~~SxQyfT z-%N4ldw?_BAHm<>+x`9kT>qo^|69A~AK$xwKAY`7`u^{2^#9naf7(Nb7h>7E$sh$z Uynin^A%V`HG5@L5=<4l%0t4u?MF0Q* literal 0 HcmV?d00001 diff --git a/docs/_static/Screenshot_upload_and_scanned.png b/docs/_static/Screenshot_upload_and_scanned.png new file mode 100644 index 0000000000000000000000000000000000000000..7b433b2ca6f2a164f0c7b7bc91d5fe0434791eda GIT binary patch literal 115989 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%0AZx-W6Sl7T_FLXbEaItb-Wbpa) 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 literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index fd9d57d4e..5dfcaf471 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -45,4 +45,5 @@ Contents troubleshooting contributing scanners + screenshots changelog From 22224a3c3877d8b0e4d75a6081cf06fc5c480f40 Mon Sep 17 00:00:00 2001 From: bmsleight Date: Wed, 6 Feb 2019 20:56:05 +0000 Subject: [PATCH 16/47] * Docs: Add MFC-J5910DW to recommended scanners --- docs/scanners.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/scanners.rst b/docs/scanners.rst index f933ab1e9..8f57a5a7a 100644 --- a/docs/scanners.rst +++ b/docs/scanners.rst @@ -17,13 +17,17 @@ that works right for you based on recommentations from other Paperless users. +---------+----------------+-----+-----+-----+----------------+ | Brother | `MFC-J6930DW`_ | yes | | | `ayounggun`_ | +---------+----------------+-----+-----+-----+----------------+ +| Brother | `MFC-J5910DW`_ | yes | | | `bmsleight`_ | ++---------+----------------+-----+-----+-----+----------------+ | Fujitsu | `ix500`_ | yes | | yes | `eonist`_ | +---------+----------------+-----+-----+-----+----------------+ .. _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 .. _ix500: http://www.fujitsu.com/us/products/computing/peripheral/scanners/scansnap/ix500/ .. _danielquinn: https://github.com/danielquinn .. _ayounggun: https://github.com/ayounggun +.. _bmsleight: https://github.com/bmsleight .. _eonist: https://github.com/eonist From af01ca91baff2986e82524de4726983591d6fcb0 Mon Sep 17 00:00:00 2001 From: bmsleight Date: Thu, 7 Feb 2019 18:40:14 +0000 Subject: [PATCH 17/47] forget the screenshots.rst! --- docs/screenshots.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/screenshots.rst diff --git a/docs/screenshots.rst b/docs/screenshots.rst new file mode 100644 index 000000000..53f564dd6 --- /dev/null +++ b/docs/screenshots.rst @@ -0,0 +1,16 @@ +.. _screenshots: + +Screenshots +=========== + +Once everything is set-up login to paperless using the web front-end + +.. image:: ./_static/Screenshot_first_run_login.png + +Nice clean interface + +.. image:: ./_static/Screenshot_first_logged.png + +Some documents loaded in via ftp or using the scanners ftp. + +.. image:: ./_static/Screenshot_upload_and_scanned.png From 76a9827958171743a838cf04a7107a661b821928 Mon Sep 17 00:00:00 2001 From: stgarf Date: Sat, 16 Feb 2019 23:25:40 -0800 Subject: [PATCH 18/47] Add docs about enabling and disabling encryption Adding docs outlining basic syntax of enabling and disabling encryption of your paperless document installation. --- docs/utilities.rst | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/docs/utilities.rst b/docs/utilities.rst index f0ab76d26..26622ea41 100644 --- a/docs/utilities.rst +++ b/docs/utilities.rst @@ -216,3 +216,62 @@ That's it. It'll loop over all of the documents in your database and attempt to match all of your tags to them. If one matches, it'll be applied. And don't worry, you can run this as often as you like, it won't double-tag a document. + +.. _utilities-encyption: + +Enabling Encrpytion +------------------- + +Let's say you've imported a few documents to play around with paperless and now +you are using it more seriously and want to enable encryption of your files. + +.. utilities-encryption-howto: + +Basic Syntax +............. + +Again we'll use the ``manage.py`` script, passing ``change_storage_type``: + +.. code:: bash + + $ /path/to/paperless/src/manage.py change_storage_type --help + usage: manage.py change_storage_type [-h] [--version] [-v {0,1,2,3}] + [--settings SETTINGS] + [--pythonpath PYTHONPATH] [--traceback] + [--no-color] [--passphrase PASSPHRASE] + {gpg,unencrypted} {gpg,unencrypted} + + This is how you migrate your stored documents from an encrypted state to an + unencrypted one (or vice-versa) + + positional arguments: + {gpg,unencrypted} The state you want to change your documents from + {gpg,unencrypted} The state you want to change your documents to + + optional arguments: + --passphrase PASSPHRASE + If PAPERLESS_PASSPHRASE isn't set already, you need to + specify it here + +Enabling Encryption +................... + +Basic usage to enable encryption of your document store (**USE A MORE SECURE PASSPHRASE**): + +(Note: If PAPERLESS_PASSPHRASE isn't set already, you need to specify it here) + +.. code:: bash + + $ /path/to/paperless/src/manage.py change_storage_type [--passphrase SECR3TP4SSPHRA$E] unencrypted gpg + + +Disabling Encryption +................... + +Basic usage to enable encryption of your document store + +(Note: Again, if PAPERLESS_PASSPHRASE isn't set already, you need to specify it here) + +.. code:: bash + + $ /path/to/paperless/src/manage.py change_storage_type [--passphrase SECR3TP4SSPHRA$E] gpg unencrypted From a590fdaec605108c9c810ee922625f951dff0b6a Mon Sep 17 00:00:00 2001 From: Benedikt Heine Date: Fri, 15 Feb 2019 12:16:56 +0100 Subject: [PATCH 19/47] Sort package arguments in Dockerfile This applies the Dockerfile best practices from dockerhub. Also it adds `--no-cache` to the `apk add` calls. This has got the same effect like `apk update`, but doesn't store the package lists in the container. --- Dockerfile | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3e8c731b9..0417b4ec3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,11 +12,30 @@ COPY scripts/docker-entrypoint.sh /sbin/docker-entrypoint.sh ENV PAPERLESS_EXPORT_DIR=/export \ PAPERLESS_CONSUMPTION_DIR=/consume - -RUN apk update --no-cache && apk add python3 gnupg libmagic libpq bash shadow curl \ - sudo poppler tesseract-ocr imagemagick ghostscript unpaper optipng && \ - apk add --virtual .build-dependencies \ - python3-dev poppler-dev postgresql-dev gcc g++ musl-dev zlib-dev jpeg-dev && \ +RUN apk add --no-cache \ + bash \ + curl \ + ghostscript \ + gnupg \ + imagemagick \ + libmagic \ + libpq \ + optipng \ + poppler \ + python3 \ + shadow \ + sudo \ + tesseract-ocr \ + unpaper && \ + apk add --no-cache --virtual .build-dependencies \ + g++ \ + gcc \ + jpeg-dev \ + musl-dev \ + poppler-dev \ + postgresql-dev \ + python3-dev \ + zlib-dev && \ # Install python dependencies python3 -m ensurepip && \ rm -r /usr/lib/python*/ensurepip && \ From 557d730974ed86eaa2caf6720c048cdb38834529 Mon Sep 17 00:00:00 2001 From: Benedikt Heine Date: Mon, 18 Feb 2019 11:01:33 +0100 Subject: [PATCH 20/47] Build docker image in Travis --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.travis.yml b/.travis.yml index aac58606d..fc96d8982 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,17 @@ matrix: - python: "3.5" - python: "3.6" - python: "3.7-dev" + - env: BUILD_DOCKER=1 + services: + - docker + before_install: + - true + install: + - true + script: + - docker build -t paperless . + after_success: + - true install: - pip install --upgrade pip pipenv sphinx From ac5f2c67704a454f8ee6bd92950574148f0bc6c9 Mon Sep 17 00:00:00 2001 From: Juan Jose Pablos Date: Sat, 2 Mar 2019 21:24:03 +0100 Subject: [PATCH 21/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a258eca9f..579ce4a91 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Here's what you get: ## Documentation -It's all available on [ReadTheDocs](https://paperless.readthedocs.org/). +It's all available on [ReadTheDocs](https://paperless.readthedocs.io/). ## Requirements From 4fc40d3ce456451b7538535792a632b164bdc70e Mon Sep 17 00:00:00 2001 From: YICHEN TAO Date: Sat, 2 Mar 2019 22:24:34 -0500 Subject: [PATCH 22/47] Update Link A link in this file is not working, updated to a working link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a258eca9f..906b74a72 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Paperless has been around a while now, and people are starting to build stuff on ## Similar Projects -There's another project out there called [Mayan EDMS](https://mayan.readthedocs.org/en/latest/) that has a surprising amount of technical overlap with Paperless. Also based on Django and using a consumer model with Tesseract and Unpaper, Mayan EDMS is *much* more featureful and comes with a slick UI as well, but still in Python 2. It may be that Paperless consumes fewer resources, but to be honest, this is just a guess as I haven't tested this myself. One thing's for certain though, *Paperless* is a **way** better name. +There's another project out there called [Mayan EDMS](http://www.mayan-edms.com/) that has a surprising amount of technical overlap with Paperless. Also based on Django and using a consumer model with Tesseract and Unpaper, Mayan EDMS is *much* more featureful and comes with a slick UI as well, but still in Python 2. It may be that Paperless consumes fewer resources, but to be honest, this is just a guess as I haven't tested this myself. One thing's for certain though, *Paperless* is a **way** better name. ## Important Note From aed8d6ae41282b4b573dfad6d47dce5d22a15f5d Mon Sep 17 00:00:00 2001 From: Steve Garf Date: Sun, 3 Mar 2019 10:31:50 -0800 Subject: [PATCH 23/47] Fix missing . in underline --- docs/utilities.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/utilities.rst b/docs/utilities.rst index 26622ea41..cc4d457bb 100644 --- a/docs/utilities.rst +++ b/docs/utilities.rst @@ -266,7 +266,7 @@ Basic usage to enable encryption of your document store (**USE A MORE SECURE PAS Disabling Encryption -................... +.................... Basic usage to enable encryption of your document store From 14d7adbd0a873fca7e56f2d5f5a89621bb995fc5 Mon Sep 17 00:00:00 2001 From: Pit Date: Sun, 3 Mar 2019 10:45:58 -0800 Subject: [PATCH 24/47] Update docs/utilities.rst Co-Authored-By: stgarf --- docs/utilities.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/utilities.rst b/docs/utilities.rst index cc4d457bb..93d156f61 100644 --- a/docs/utilities.rst +++ b/docs/utilities.rst @@ -258,7 +258,7 @@ Enabling Encryption Basic usage to enable encryption of your document store (**USE A MORE SECURE PASSPHRASE**): -(Note: If PAPERLESS_PASSPHRASE isn't set already, you need to specify it here) +(Note: If ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here) .. code:: bash From 44878f28fac894960cf3e03b3c520e2b4b61271b Mon Sep 17 00:00:00 2001 From: Pit Date: Sun, 3 Mar 2019 10:46:06 -0800 Subject: [PATCH 25/47] Update docs/utilities.rst Co-Authored-By: stgarf --- docs/utilities.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/utilities.rst b/docs/utilities.rst index 93d156f61..4a590fd39 100644 --- a/docs/utilities.rst +++ b/docs/utilities.rst @@ -270,7 +270,7 @@ Disabling Encryption Basic usage to enable encryption of your document store -(Note: Again, if PAPERLESS_PASSPHRASE isn't set already, you need to specify it here) +(Note: Again, if ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here) .. code:: bash From 7bf1d2883c2a97e02987e49951f5a59d55960c59 Mon Sep 17 00:00:00 2001 From: Pit Date: Sun, 3 Mar 2019 10:46:43 -0800 Subject: [PATCH 26/47] Update docs/utilities.rst Co-Authored-By: stgarf --- docs/utilities.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/utilities.rst b/docs/utilities.rst index 4a590fd39..e95ef4725 100644 --- a/docs/utilities.rst +++ b/docs/utilities.rst @@ -268,7 +268,7 @@ Basic usage to enable encryption of your document store (**USE A MORE SECURE PAS Disabling Encryption .................... -Basic usage to enable encryption of your document store +Basic usage to enable encryption of your document store: (Note: Again, if ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here) From 02201997669f51e5c612e152678d0169bf72c7d6 Mon Sep 17 00:00:00 2001 From: Jens Pfeifle Date: Tue, 29 Jan 2019 09:02:33 +0100 Subject: [PATCH 27/47] fix parse error of some documents by using gs --- src/paperless_tesseract/parsers.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index fb8c1c3ec..5b468973d 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -45,13 +45,23 @@ def get_thumbnail(self): """ out_path = os.path.join(self.tempdir, "convert.png") + gs_out_path = os.path.join(self.tempdir, "gs_out.png") # Run convert to get a decent thumbnail + + # https://github.com/danielquinn/paperless/issues/447 + # call gs first + environment = os.environ.copy() + cmd = ["gs", "-q", "-sDEVICE=pngalpha", + "-o", gs_out_path, self.document_path] + if not subprocess.Popen(cmd, env=environment).wait() == 0: + raise ParseError("Thumbnail (gs) failed at {}".format(cmd)) + # then run convert on the output from gs run_convert( self.CONVERT, "-scale", "500x5000", "-alpha", "remove", - "{}[0]".format(self.document_path), + "gs_out_path", out_path ) From 50504c3fd8cbf67a4c34c521e0f15a63e2653e95 Mon Sep 17 00:00:00 2001 From: JensPfeifle Date: Wed, 30 Jan 2019 10:03:42 +0100 Subject: [PATCH 28/47] remove unnecessary env arg in Popen --- src/paperless_tesseract/parsers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 5b468973d..01595754c 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -51,10 +51,9 @@ def get_thumbnail(self): # https://github.com/danielquinn/paperless/issues/447 # call gs first - environment = os.environ.copy() cmd = ["gs", "-q", "-sDEVICE=pngalpha", "-o", gs_out_path, self.document_path] - if not subprocess.Popen(cmd, env=environment).wait() == 0: + if not subprocess.Popen(cmd).wait() == 0: raise ParseError("Thumbnail (gs) failed at {}".format(cmd)) # then run convert on the output from gs run_convert( From cbf008f37b9ce0fb11e2b877eff95e9ec98a37e9 Mon Sep 17 00:00:00 2001 From: Pit Date: Sat, 2 Feb 2019 23:37:25 +0100 Subject: [PATCH 29/47] Fix quoting in call to run_convert Co-Authored-By: JensPfeifle --- src/paperless_tesseract/parsers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 01595754c..b6b77502a 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -60,7 +60,7 @@ def get_thumbnail(self): self.CONVERT, "-scale", "500x5000", "-alpha", "remove", - "gs_out_path", + gs_out_path, out_path ) From ea282c22baada5868127719907810f8a2e28a27f Mon Sep 17 00:00:00 2001 From: JensPfeifle Date: Sun, 3 Feb 2019 16:57:32 +0100 Subject: [PATCH 30/47] Add GS_BINARY to settings to avoid harcoded call of "gs" --- paperless.conf.example | 3 +++ src/paperless/settings.py | 3 +++ src/paperless_tesseract/parsers.py | 11 +++++++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/paperless.conf.example b/paperless.conf.example index aed2eee71..05a6c9cca 100644 --- a/paperless.conf.example +++ b/paperless.conf.example @@ -247,6 +247,9 @@ PAPERLESS_EMAIL_SECRET="" # Convert (part of the ImageMagick suite) #PAPERLESS_CONVERT_BINARY=/usr/bin/convert +# Ghostscript +#PAPERLESS_GS_BINARY = /usr/bin/gs + # Unpaper #PAPERLESS_UNPAPER_BINARY=/usr/bin/unpaper diff --git a/src/paperless/settings.py b/src/paperless/settings.py index eee727287..917d1e64f 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -263,6 +263,9 @@ def __get_boolean(key, default="NO"): CONVERT_MEMORY_LIMIT = os.getenv("PAPERLESS_CONVERT_MEMORY_LIMIT") CONVERT_DENSITY = os.getenv("PAPERLESS_CONVERT_DENSITY") +# Ghostscript +GS_BINARY = os.getenv("PAPERLESS_GS_BINARY", "gs") + # OptiPNG OPTIPNG_BINARY = os.getenv("PAPERLESS_OPTIPNG_BINARY", "optipng") diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index b6b77502a..6086a5920 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -29,6 +29,7 @@ class RasterisedDocumentParser(DocumentParser): """ CONVERT = settings.CONVERT_BINARY + GHOSTSCRIPT = settings.GS_BINARY DENSITY = settings.CONVERT_DENSITY if settings.CONVERT_DENSITY else 300 THREADS = int(settings.OCR_THREADS) if settings.OCR_THREADS else None UNPAPER = settings.UNPAPER_BINARY @@ -47,12 +48,14 @@ def get_thumbnail(self): out_path = os.path.join(self.tempdir, "convert.png") gs_out_path = os.path.join(self.tempdir, "gs_out.png") - # Run convert to get a decent thumbnail - + # Extract the first PDF page as a PNG using Ghostscript # https://github.com/danielquinn/paperless/issues/447 # call gs first - cmd = ["gs", "-q", "-sDEVICE=pngalpha", - "-o", gs_out_path, self.document_path] + cmd = [self.GHOSTSCRIPT, + "-q", + "-sDEVICE=pngalpha", + "-o", gs_out_path, + self.document_path] if not subprocess.Popen(cmd).wait() == 0: raise ParseError("Thumbnail (gs) failed at {}".format(cmd)) # then run convert on the output from gs From 29b0886950a667a18687221cc5093d7ff79af23a Mon Sep 17 00:00:00 2001 From: JensPfeifle Date: Sun, 3 Feb 2019 18:19:06 +0100 Subject: [PATCH 31/47] try to run convert, but fall back on gs if needed --- src/paperless_tesseract/parsers.py | 52 +++++++++++++++++++----------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 6086a5920..f312eee2a 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -46,25 +46,39 @@ def get_thumbnail(self): """ out_path = os.path.join(self.tempdir, "convert.png") - gs_out_path = os.path.join(self.tempdir, "gs_out.png") - - # Extract the first PDF page as a PNG using Ghostscript - # https://github.com/danielquinn/paperless/issues/447 - # call gs first - cmd = [self.GHOSTSCRIPT, - "-q", - "-sDEVICE=pngalpha", - "-o", gs_out_path, - self.document_path] - if not subprocess.Popen(cmd).wait() == 0: - raise ParseError("Thumbnail (gs) failed at {}".format(cmd)) - # then run convert on the output from gs - run_convert( - self.CONVERT, - "-scale", "500x5000", - "-alpha", "remove", - gs_out_path, - out_path + + # Run convert to get a decent thumbnail + try: + run_convert( + self.CONVERT, + "-scale", "500x5000", + "-alpha", "remove", + "{}[0]".format(self.document_path), + out_path + ) + except ParseError: + # if convert fails, fall back to extracting + # the first PDF page as a PNG using Ghostscript + self.log( + "warning", + "Thumbnail generation with ImageMagick failed, " + "falling back to Ghostscript." + ) + gs_out_path = os.path.join(self.tempdir, "gs_out.png") + cmd = [self.GHOSTSCRIPT, + "-q", + "-sDEVICE=pngalpha", + "-o", gs_out_path, + self.document_path] + if not subprocess.Popen(cmd).wait() == 0: + raise ParseError("Thumbnail (gs) failed at {}".format(cmd)) + # then run convert on the output from gs + run_convert( + self.CONVERT, + "-scale", "500x5000", + "-alpha", "remove", + gs_out_path, + out_path ) return out_path From 336f747f16ecb3af556304cf59f40985f4b095c7 Mon Sep 17 00:00:00 2001 From: jenspfeifle Date: Sun, 3 Mar 2019 20:41:17 +0100 Subject: [PATCH 32/47] make pycodestyle happy --- src/paperless_tesseract/parsers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index f312eee2a..c2db5a056 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -79,7 +79,7 @@ def get_thumbnail(self): "-alpha", "remove", gs_out_path, out_path - ) + ) return out_path From 018c1c79a12f2d4a92d436be580fbe6715ff9152 Mon Sep 17 00:00:00 2001 From: Pit Date: Sun, 3 Mar 2019 14:56:51 -0500 Subject: [PATCH 33/47] Change link to https Change linkfrom http to https Co-Authored-By: taoyichen --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 906b74a72..a5d985fae 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Paperless has been around a while now, and people are starting to build stuff on ## Similar Projects -There's another project out there called [Mayan EDMS](http://www.mayan-edms.com/) that has a surprising amount of technical overlap with Paperless. Also based on Django and using a consumer model with Tesseract and Unpaper, Mayan EDMS is *much* more featureful and comes with a slick UI as well, but still in Python 2. It may be that Paperless consumes fewer resources, but to be honest, this is just a guess as I haven't tested this myself. One thing's for certain though, *Paperless* is a **way** better name. +There's another project out there called [Mayan EDMS](https://www.mayan-edms.com/) that has a surprising amount of technical overlap with Paperless. Also based on Django and using a consumer model with Tesseract and Unpaper, Mayan EDMS is *much* more featureful and comes with a slick UI as well, but still in Python 2. It may be that Paperless consumes fewer resources, but to be honest, this is just a guess as I haven't tested this myself. One thing's for certain though, *Paperless* is a **way** better name. ## Important Note From 362570ca0dcd5e871940eee6108f111654028d8a Mon Sep 17 00:00:00 2001 From: jenspfeifle Date: Tue, 5 Mar 2019 21:54:59 +0100 Subject: [PATCH 34/47] update links to reflect move to the-paperless-project --- Dockerfile | 2 +- README-de.md | 6 +++--- README-el.md | 6 +++--- README.md | 6 +++--- docs/contributing.rst | 4 ++-- docs/extending.rst | 10 +++++----- docs/requirements.rst | 4 ++-- docs/setup.rst | 16 ++++++++-------- docs/troubleshooting.rst | 2 +- presentation/index.html | 2 +- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3e8c731b9..cedc6aaed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:3.8 -LABEL maintainer="The Paperless Project https://github.com/danielquinn/paperless" \ +LABEL maintainer="The Paperless Project https://github.com/the-paperless-project/paperless" \ contributors="Guy Addadi , Pit Kleyersburg , \ Sven Fischer " diff --git a/README-de.md b/README-de.md index 6fae95d74..f394086c2 100644 --- a/README-de.md +++ b/README-de.md @@ -1,8 +1,8 @@ [ [en](README.md) | de | [el](README-el.md) ] -![Paperless](https://raw.githubusercontent.com/danielquinn/paperless/master/src/paperless/static/paperless/img/logo-dark.png) +![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/danielquinn/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/danielquinn/paperless.svg?branch=master)](https://travis-ci.org/danielquinn/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/danielquinn/paperless/blob/master/THANKS.md) +[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Indexiere und archiviere alle deine eingescannten Papierdokumente @@ -28,7 +28,7 @@ Paperless steuert nicht deinen Scanner, es hilft nur damit umzugehen, was der Sc Hier das, was du bekommt: -![Vorher und Nachher](https://raw.githubusercontent.com/danielquinn/paperless/master/docs/_static/screenshot.png) +![Vorher und Nachher](https://raw.githubusercontent.com/the-paperless-project/paperless/master/docs/_static/screenshot.png) ## Dokumentation diff --git a/README-el.md b/README-el.md index 027d987b6..9cd4104ed 100644 --- a/README-el.md +++ b/README-el.md @@ -1,8 +1,8 @@ [ [en](README.md) | [de](README-de.md) | el ] -![Paperless](https://raw.githubusercontent.com/danielquinn/paperless/master/src/paperless/static/paperless/img/logo-dark.png) +![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/danielquinn/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/danielquinn/paperless.svg?branch=master)](https://travis-ci.org/danielquinn/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/danielquinn/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Ευρετήριο και αρχείο για όλα σας τα σκαναρισμένα έγγραφα @@ -27,7 +27,7 @@ Αυτό είναι που θα πάρετε: -![Το πριν και το μετά](https://raw.githubusercontent.com/danielquinn/paperless/master/docs/_static/screenshot.png) +![Το πριν και το μετά](https://raw.githubusercontent.com/the-paperless-project/paperless/master/docs/_static/screenshot.png) ## Documentation diff --git a/README.md b/README.md index 579ce4a91..fb27bd104 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ [ en | [de](README-de.md) | [el](README-el.md) ] -![Paperless](https://raw.githubusercontent.com/danielquinn/paperless/master/src/paperless/static/paperless/img/logo-dark.png) +![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/danielquinn/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/danielquinn/paperless.svg?branch=master)](https://travis-ci.org/danielquinn/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/danielquinn/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Index and archive all of your scanned paper documents @@ -27,7 +27,7 @@ Paperless does not control your scanner, it only helps you deal with what your s Here's what you get: -![The before and after](https://raw.githubusercontent.com/danielquinn/paperless/master/docs/_static/screenshot.png) +![The before and after](https://raw.githubusercontent.com/the-paperless-project/paperless/master/docs/_static/screenshot.png) ## Documentation diff --git a/docs/contributing.rst b/docs/contributing.rst index 4678ff3aa..9b18861a8 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -136,6 +136,6 @@ there, with a few small changes, but basically it boils down to: I'm proud to say that the CoC has never had to be enforced because everyone has been awesome, friendly, and professional. -.. _GitHub: https://github.com/danielquinn/paperless/issues +.. _GitHub: https://github.com/the-paperless-project/paperless/issues .. _very well documented: https://www.python.org/dev/peps/pep-0008/ -.. _code of conduct: https://github.com/danielquinn/paperless/blob/master/CODE_OF_CONDUCT.md +.. _code of conduct: https://github.com/the-paperless-project/paperless/blob/master/CODE_OF_CONDUCT.md diff --git a/docs/extending.rst b/docs/extending.rst index 25e05274f..2afc6367b 100644 --- a/docs/extending.rst +++ b/docs/extending.rst @@ -8,7 +8,7 @@ managed by way of modifying the code directly and issuing a pull request on `GitHub`_. However, over time the project has been evolving to be a little more "pluggable" so that users can write their own stuff that talks to it. -.. _GitHub: https://github.com/danielquinn/paperless +.. _GitHub: https://github.com/the-paperless-project/paperless .. _extending-parsers: @@ -106,7 +106,7 @@ The core Paperless functionality is based on this design, so if you want to see what a parser module should look like, have a look at `parsers.py`_, `signals.py`_, and `apps.py`_ in the `paperless_tesseract`_ module. -.. _parsers.py: https://github.com/danielquinn/paperless/blob/master/src/paperless_tesseract/parsers.py -.. _signals.py: https://github.com/danielquinn/paperless/blob/master/src/paperless_tesseract/signals.py -.. _apps.py: https://github.com/danielquinn/paperless/blob/master/src/paperless_tesseract/apps.py -.. _paperless_tesseract: https://github.com/danielquinn/paperless/blob/master/src/paperless_tesseract/ +.. _parsers.py: https://github.com/the-paperless-project/paperless/blob/master/src/paperless_tesseract/parsers.py +.. _signals.py: https://github.com/the-paperless-project/paperless/blob/master/src/paperless_tesseract/signals.py +.. _apps.py: https://github.com/the-paperless-project/paperless/blob/master/src/paperless_tesseract/apps.py +.. _paperless_tesseract: https://github.com/the-paperless-project/paperless/blob/master/src/paperless_tesseract/ diff --git a/docs/requirements.rst b/docs/requirements.rst index 2bfc5cdec..e528fdae7 100644 --- a/docs/requirements.rst +++ b/docs/requirements.rst @@ -52,7 +52,7 @@ with PDFs. Often this is the case with Apple systems using HomeBrew, but other Linuxes have been a problem as well. The solution appears to be to install ghostscript as well as ImageMagick: -.. _run into problems: https://github.com/danielquinn/paperless/issues/25 +.. _run into problems: https://github.com/the-paperless-project/paperless/issues/25 .. code:: bash @@ -92,7 +92,7 @@ enter it, and install the requirements using the ``requirements.txt`` file: $ . /path/to/arbitrary/directory/bin/activate $ pip install --requirement /path/to/paperless/requirements.txt -Now you're ready to go. Just remember to enter (activate) your virtualenv +Now you're ready to go. Just remember to enter (activate) your virtualenv whenever you want to use Paperless. diff --git a/docs/setup.rst b/docs/setup.rst index 6781bb8c0..9c665a607 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -8,7 +8,7 @@ basic documentation is in order. If you follow along in this document and still have trouble, please open an `issue on GitHub`_ so I can fill in the gaps. -.. _issue on GitHub: https://github.com/danielquinn/paperless/issues +.. _issue on GitHub: https://github.com/the-paperless-project/paperless/issues .. _setup-download: @@ -21,7 +21,7 @@ either by using ``git``: .. code:: bash - $ git clone https://github.com/danielquinn/paperless.git + $ git clone https://github.com/the-paperless-project/paperless.git $ cd paperless or just download the tarball and go that route: @@ -29,7 +29,7 @@ or just download the tarball and go that route: .. code:: bash $ cd to the directory where you want to run Paperless - $ wget https://github.com/danielquinn/paperless/archive/master.zip + $ wget https://github.com/the-paperless-project/paperless/archive/master.zip $ unzip master.zip $ cd paperless-master @@ -147,15 +147,15 @@ Docker Method instructions in comments in the file. The only change that is a hard requirement is to specify where the consumption directory should mount.[#dockercomposeyml]_ - + .. caution:: - + If you are using NFS mounts for the consume directory you also need to change the command to turn off inotify as it doesn't work with NFS - + `command: ["document_consumer", "--no-inotify"]` - - + + 5. Modify ``docker-compose.env`` and adapt the following environment variables: ``PAPERLESS_PASSPHRASE`` diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst index 05b314004..7c5d87ca5 100644 --- a/docs/troubleshooting.rst +++ b/docs/troubleshooting.rst @@ -72,4 +72,4 @@ with a DPI of 300, then merging the images into the single PDF with For more information on this and situations like it, you should take a look at `Issue #118`_ as that's where this tip originated. -.. _Issue #118: https://github.com/danielquinn/paperless/issues/118 +.. _Issue #118: https://github.com/the-paperless-project/paperless/issues/118 diff --git a/presentation/index.html b/presentation/index.html index 25ce83ad9..4bb4b7cf5 100644 --- a/presentation/index.html +++ b/presentation/index.html @@ -177,7 +177,7 @@

TODO

Fork Me

  - https://github.com/danielquinn/paperless + https://github.com/the-paperless-project/paperless


From 882b6a93bb980475c3b85961e4a041bbe5f4878c Mon Sep 17 00:00:00 2001 From: jenspfeifle Date: Tue, 5 Mar 2019 22:05:44 +0100 Subject: [PATCH 35/47] update links to reflect move to the-paperless-project --- docs/changelog.rst | 216 ++++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index eebf55de7..0048d300c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -631,114 +631,114 @@ bulk of the work on this big change. .. _Brian Cribbs: https://github.com/cribbstechnolog .. _Brendan M. Sleight: https://github.com/bmsleight -.. _#20: https://github.com/danielquinn/paperless/issues/20 -.. _#44: https://github.com/danielquinn/paperless/issues/44 -.. _#45: https://github.com/danielquinn/paperless/issues/45 -.. _#47: https://github.com/danielquinn/paperless/issues/47 -.. _#48: https://github.com/danielquinn/paperless/issues/48 -.. _#53: https://github.com/danielquinn/paperless/issues/53 -.. _#54: https://github.com/danielquinn/paperless/issues/54 -.. _#57: https://github.com/danielquinn/paperless/issues/57 -.. _#60: https://github.com/danielquinn/paperless/issues/60 -.. _#67: https://github.com/danielquinn/paperless/issues/67 -.. _#68: https://github.com/danielquinn/paperless/issues/68 -.. _#71: https://github.com/danielquinn/paperless/issues/71 -.. _#81: https://github.com/danielquinn/paperless/issues/81 -.. _#89: https://github.com/danielquinn/paperless/issues/89 -.. _#94: https://github.com/danielquinn/paperless/issues/94 -.. _#98: https://github.com/danielquinn/paperless/issues/98 -.. _#112: https://github.com/danielquinn/paperless/issues/112 -.. _#121: https://github.com/danielquinn/paperless/issues/121 -.. _#131: https://github.com/danielquinn/paperless/issues/131 -.. _#146: https://github.com/danielquinn/paperless/issues/146 -.. _#148: https://github.com/danielquinn/paperless/pull/148 -.. _#150: https://github.com/danielquinn/paperless/pull/150 -.. _#158: https://github.com/danielquinn/paperless/issues/158 -.. _#171: https://github.com/danielquinn/paperless/issues/171 -.. _#172: https://github.com/danielquinn/paperless/issues/172 -.. _#179: https://github.com/danielquinn/paperless/pull/179 -.. _#199: https://github.com/danielquinn/paperless/issues/199 -.. _#200: https://github.com/danielquinn/paperless/issues/200 -.. _#206: https://github.com/danielquinn/paperless/issues/206 -.. _#212: https://github.com/danielquinn/paperless/pull/212 -.. _#220: https://github.com/danielquinn/paperless/pull/220 -.. _#224: https://github.com/danielquinn/paperless/pull/224 -.. _#226: https://github.com/danielquinn/paperless/pull/226 -.. _#227: https://github.com/danielquinn/paperless/pull/227 -.. _#228: https://github.com/danielquinn/paperless/pull/228 -.. _#229: https://github.com/danielquinn/paperless/pull/229 -.. _#230: https://github.com/danielquinn/paperless/pull/230 -.. _#232: https://github.com/danielquinn/paperless/issues/232 -.. _#235: https://github.com/danielquinn/paperless/issues/235 -.. _#236: https://github.com/danielquinn/paperless/issues/236 -.. _#255: https://github.com/danielquinn/paperless/pull/255 -.. _#268: https://github.com/danielquinn/paperless/pull/268 -.. _#277: https://github.com/danielquinn/paperless/pull/277 -.. _#272: https://github.com/danielquinn/paperless/issues/272 -.. _#248: https://github.com/danielquinn/paperless/issues/248 -.. _#278: https://github.com/danielquinn/paperless/issues/248 -.. _#283: https://github.com/danielquinn/paperless/issues/283 -.. _#256: https://github.com/danielquinn/paperless/pull/256 -.. _#285: https://github.com/danielquinn/paperless/pull/285 -.. _#291: https://github.com/danielquinn/paperless/pull/291 -.. _#295: https://github.com/danielquinn/paperless/pull/295 -.. _#299: https://github.com/danielquinn/paperless/issues/299 -.. _#300: https://github.com/danielquinn/paperless/pull/300 -.. _#301: https://github.com/danielquinn/paperless/issues/301 -.. _#303: https://github.com/danielquinn/paperless/issues/303 -.. _#305: https://github.com/danielquinn/paperless/issues/305 -.. _#306: https://github.com/danielquinn/paperless/issues/306 -.. _#308: https://github.com/danielquinn/paperless/issues/308 -.. _#311: https://github.com/danielquinn/paperless/pull/311 -.. _#312: https://github.com/danielquinn/paperless/pull/312 -.. _#313: https://github.com/danielquinn/paperless/pull/313 -.. _#322: https://github.com/danielquinn/paperless/pull/322 -.. _#328: https://github.com/danielquinn/paperless/pull/328 -.. _#253: https://github.com/danielquinn/paperless/issues/253 -.. _#262: https://github.com/danielquinn/paperless/issues/262 -.. _#323: https://github.com/danielquinn/paperless/issues/323 -.. _#344: https://github.com/danielquinn/paperless/pull/344 -.. _#351: https://github.com/danielquinn/paperless/pull/351 -.. _#352: https://github.com/danielquinn/paperless/pull/352 -.. _#354: https://github.com/danielquinn/paperless/issues/354 -.. _#371: https://github.com/danielquinn/paperless/issues/371 -.. _#374: https://github.com/danielquinn/paperless/pull/374 -.. _#375: https://github.com/danielquinn/paperless/pull/375 -.. _#376: https://github.com/danielquinn/paperless/pull/376 -.. _#383: https://github.com/danielquinn/paperless/pull/383 -.. _#384: https://github.com/danielquinn/paperless/issues/384 -.. _#386: https://github.com/danielquinn/paperless/issues/386 -.. _#387: https://github.com/danielquinn/paperless/pull/387 -.. _#391: https://github.com/danielquinn/paperless/pull/391 -.. _#390: https://github.com/danielquinn/paperless/pull/390 -.. _#392: https://github.com/danielquinn/paperless/issues/392 -.. _#393: https://github.com/danielquinn/paperless/issues/393 -.. _#395: https://github.com/danielquinn/paperless/pull/395 -.. _#394: https://github.com/danielquinn/paperless/issues/394 -.. _#396: https://github.com/danielquinn/paperless/pull/396 -.. _#399: https://github.com/danielquinn/paperless/pull/399 -.. _#400: https://github.com/danielquinn/paperless/pull/400 -.. _#401: https://github.com/danielquinn/paperless/pull/401 -.. _#405: https://github.com/danielquinn/paperless/pull/405 -.. _#406: https://github.com/danielquinn/paperless/issues/406 -.. _#412: https://github.com/danielquinn/paperless/issues/412 -.. _#413: https://github.com/danielquinn/paperless/pull/413 -.. _#414: https://github.com/danielquinn/paperless/issues/414 -.. _#423: https://github.com/danielquinn/paperless/issues/423 -.. _#433: https://github.com/danielquinn/paperless/issues/433 -.. _#440: https://github.com/danielquinn/paperless/pull/440 -.. _#441: https://github.com/danielquinn/paperless/pull/441 -.. _#442: https://github.com/danielquinn/paperless/pull/442 -.. _#466: https://github.com/danielquinn/paperless/pull/466 -.. _#471: https://github.com/danielquinn/paperless/pull/471 -.. _#475: https://github.com/danielquinn/paperless/pull/475 -.. _#481: https://github.com/danielquinn/paperless/pull/481 -.. _#483: https://github.com/danielquinn/paperless/pull/483 -.. _#484: https://github.com/danielquinn/paperless/pull/484 -.. _#488: https://github.com/danielquinn/paperless/pull/488 -.. _#489: https://github.com/danielquinn/paperless/pull/489 -.. _#492: https://github.com/danielquinn/paperless/pull/492 +.. _#20: https://github.com/the-paperless-project/paperless/issues/20 +.. _#44: https://github.com/the-paperless-project/paperless/issues/44 +.. _#45: https://github.com/the-paperless-project/paperless/issues/45 +.. _#47: https://github.com/the-paperless-project/paperless/issues/47 +.. _#48: https://github.com/the-paperless-project/paperless/issues/48 +.. _#53: https://github.com/the-paperless-project/paperless/issues/53 +.. _#54: https://github.com/the-paperless-project/paperless/issues/54 +.. _#57: https://github.com/the-paperless-project/paperless/issues/57 +.. _#60: https://github.com/the-paperless-project/paperless/issues/60 +.. _#67: https://github.com/the-paperless-project/paperless/issues/67 +.. _#68: https://github.com/the-paperless-project/paperless/issues/68 +.. _#71: https://github.com/the-paperless-project/paperless/issues/71 +.. _#81: https://github.com/the-paperless-project/paperless/issues/81 +.. _#89: https://github.com/the-paperless-project/paperless/issues/89 +.. _#94: https://github.com/the-paperless-project/paperless/issues/94 +.. _#98: https://github.com/the-paperless-project/paperless/issues/98 +.. _#112: https://github.com/the-paperless-project/paperless/issues/112 +.. _#121: https://github.com/the-paperless-project/paperless/issues/121 +.. _#131: https://github.com/the-paperless-project/paperless/issues/131 +.. _#146: https://github.com/the-paperless-project/paperless/issues/146 +.. _#148: https://github.com/the-paperless-project/paperless/pull/148 +.. _#150: https://github.com/the-paperless-project/paperless/pull/150 +.. _#158: https://github.com/the-paperless-project/paperless/issues/158 +.. _#171: https://github.com/the-paperless-project/paperless/issues/171 +.. _#172: https://github.com/the-paperless-project/paperless/issues/172 +.. _#179: https://github.com/the-paperless-project/paperless/pull/179 +.. _#199: https://github.com/the-paperless-project/paperless/issues/199 +.. _#200: https://github.com/the-paperless-project/paperless/issues/200 +.. _#206: https://github.com/the-paperless-project/paperless/issues/206 +.. _#212: https://github.com/the-paperless-project/paperless/pull/212 +.. _#220: https://github.com/the-paperless-project/paperless/pull/220 +.. _#224: https://github.com/the-paperless-project/paperless/pull/224 +.. _#226: https://github.com/the-paperless-project/paperless/pull/226 +.. _#227: https://github.com/the-paperless-project/paperless/pull/227 +.. _#228: https://github.com/the-paperless-project/paperless/pull/228 +.. _#229: https://github.com/the-paperless-project/paperless/pull/229 +.. _#230: https://github.com/the-paperless-project/paperless/pull/230 +.. _#232: https://github.com/the-paperless-project/paperless/issues/232 +.. _#235: https://github.com/the-paperless-project/paperless/issues/235 +.. _#236: https://github.com/the-paperless-project/paperless/issues/236 +.. _#255: https://github.com/the-paperless-project/paperless/pull/255 +.. _#268: https://github.com/the-paperless-project/paperless/pull/268 +.. _#277: https://github.com/the-paperless-project/paperless/pull/277 +.. _#272: https://github.com/the-paperless-project/paperless/issues/272 +.. _#248: https://github.com/the-paperless-project/paperless/issues/248 +.. _#278: https://github.com/the-paperless-project/paperless/issues/248 +.. _#283: https://github.com/the-paperless-project/paperless/issues/283 +.. _#256: https://github.com/the-paperless-project/paperless/pull/256 +.. _#285: https://github.com/the-paperless-project/paperless/pull/285 +.. _#291: https://github.com/the-paperless-project/paperless/pull/291 +.. _#295: https://github.com/the-paperless-project/paperless/pull/295 +.. _#299: https://github.com/the-paperless-project/paperless/issues/299 +.. _#300: https://github.com/the-paperless-project/paperless/pull/300 +.. _#301: https://github.com/the-paperless-project/paperless/issues/301 +.. _#303: https://github.com/the-paperless-project/paperless/issues/303 +.. _#305: https://github.com/the-paperless-project/paperless/issues/305 +.. _#306: https://github.com/the-paperless-project/paperless/issues/306 +.. _#308: https://github.com/the-paperless-project/paperless/issues/308 +.. _#311: https://github.com/the-paperless-project/paperless/pull/311 +.. _#312: https://github.com/the-paperless-project/paperless/pull/312 +.. _#313: https://github.com/the-paperless-project/paperless/pull/313 +.. _#322: https://github.com/the-paperless-project/paperless/pull/322 +.. _#328: https://github.com/the-paperless-project/paperless/pull/328 +.. _#253: https://github.com/the-paperless-project/paperless/issues/253 +.. _#262: https://github.com/the-paperless-project/paperless/issues/262 +.. _#323: https://github.com/the-paperless-project/paperless/issues/323 +.. _#344: https://github.com/the-paperless-project/paperless/pull/344 +.. _#351: https://github.com/the-paperless-project/paperless/pull/351 +.. _#352: https://github.com/the-paperless-project/paperless/pull/352 +.. _#354: https://github.com/the-paperless-project/paperless/issues/354 +.. _#371: https://github.com/the-paperless-project/paperless/issues/371 +.. _#374: https://github.com/the-paperless-project/paperless/pull/374 +.. _#375: https://github.com/the-paperless-project/paperless/pull/375 +.. _#376: https://github.com/the-paperless-project/paperless/pull/376 +.. _#383: https://github.com/the-paperless-project/paperless/pull/383 +.. _#384: https://github.com/the-paperless-project/paperless/issues/384 +.. _#386: https://github.com/the-paperless-project/paperless/issues/386 +.. _#387: https://github.com/the-paperless-project/paperless/pull/387 +.. _#391: https://github.com/the-paperless-project/paperless/pull/391 +.. _#390: https://github.com/the-paperless-project/paperless/pull/390 +.. _#392: https://github.com/the-paperless-project/paperless/issues/392 +.. _#393: https://github.com/the-paperless-project/paperless/issues/393 +.. _#395: https://github.com/the-paperless-project/paperless/pull/395 +.. _#394: https://github.com/the-paperless-project/paperless/issues/394 +.. _#396: https://github.com/the-paperless-project/paperless/pull/396 +.. _#399: https://github.com/the-paperless-project/paperless/pull/399 +.. _#400: https://github.com/the-paperless-project/paperless/pull/400 +.. _#401: https://github.com/the-paperless-project/paperless/pull/401 +.. _#405: https://github.com/the-paperless-project/paperless/pull/405 +.. _#406: https://github.com/the-paperless-project/paperless/issues/406 +.. _#412: https://github.com/the-paperless-project/paperless/issues/412 +.. _#413: https://github.com/the-paperless-project/paperless/pull/413 +.. _#414: https://github.com/the-paperless-project/paperless/issues/414 +.. _#423: https://github.com/the-paperless-project/paperless/issues/423 +.. _#433: https://github.com/the-paperless-project/paperless/issues/433 +.. _#440: https://github.com/the-paperless-project/paperless/pull/440 +.. _#441: https://github.com/the-paperless-project/paperless/pull/441 +.. _#442: https://github.com/the-paperless-project/paperless/pull/442 +.. _#466: https://github.com/the-paperless-project/paperless/pull/466 +.. _#471: https://github.com/the-paperless-project/paperless/pull/471 +.. _#475: https://github.com/the-paperless-project/paperless/pull/475 +.. _#481: https://github.com/the-paperless-project/paperless/pull/481 +.. _#483: https://github.com/the-paperless-project/paperless/pull/483 +.. _#484: https://github.com/the-paperless-project/paperless/pull/484 +.. _#488: https://github.com/the-paperless-project/paperless/pull/488 +.. _#489: https://github.com/the-paperless-project/paperless/pull/489 +.. _#492: https://github.com/the-paperless-project/paperless/pull/492 .. _pipenv: https://docs.pipenv.org/ -.. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/ +.. _a new home on Docker Hub: https://hub.docker.com/r/the-paperless-project/paperless/ .. _optipng: http://optipng.sourceforge.net/ From fbe83565e2d4cf7afd257e665807314ac04321e1 Mon Sep 17 00:00:00 2001 From: jenspfeifle Date: Tue, 5 Mar 2019 22:18:26 +0100 Subject: [PATCH 36/47] revert gitter link to danielquinn --- README-de.md | 2 +- README-el.md | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README-de.md b/README-de.md index f394086c2..bc7aa4709 100644 --- a/README-de.md +++ b/README-de.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Indexiere und archiviere alle deine eingescannten Papierdokumente diff --git a/README-el.md b/README-el.md index 9cd4104ed..36edca63d 100644 --- a/README-el.md +++ b/README-el.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Ευρετήριο και αρχείο για όλα σας τα σκαναρισμένα έγγραφα diff --git a/README.md b/README.md index fb27bd104..5031c14aa 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/the-paperless-project/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Index and archive all of your scanned paper documents From 19045f3667bd3682fb10b05e7b6ae131f66b8aa4 Mon Sep 17 00:00:00 2001 From: jenspfeifle Date: Tue, 5 Mar 2019 22:24:35 +0100 Subject: [PATCH 37/47] revert docker hub link to danielquinn --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 0048d300c..8a0528a88 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -740,5 +740,5 @@ bulk of the work on this big change. .. _#492: https://github.com/the-paperless-project/paperless/pull/492 .. _pipenv: https://docs.pipenv.org/ -.. _a new home on Docker Hub: https://hub.docker.com/r/the-paperless-project/paperless/ +.. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/ .. _optipng: http://optipng.sourceforge.net/ From b7699c61d95ab1b79fcb0b12a93b13427c815df5 Mon Sep 17 00:00:00 2001 From: stgarf Date: Sun, 10 Mar 2019 09:49:43 -0700 Subject: [PATCH 38/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 483a58ada..e252edd56 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Paperless has been around a while now, and people are starting to build stuff on * [Paperless Desktop](https://github.com/thomasbrueggemann/paperless-desktop): A desktop UI for your Paperless installation. Runs on Mac, Linux, and Windows. * [ansible-role-paperless](https://github.com/ovv/ansible-role-paperless): An easy way to get Paperless running via Ansible. - +* [paperless-cli](https://github.com/stgarf/paperless-cli): A golang command line binary to interact with a Paperless instance. ## Similar Projects From daca77cc1b8478f63165e2a939587d49195726ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Sun, 17 Mar 2019 16:37:47 +0100 Subject: [PATCH 39/47] Strip the thumbnails --- 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 c2db5a056..fd7077834 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -53,6 +53,7 @@ def get_thumbnail(self): self.CONVERT, "-scale", "500x5000", "-alpha", "remove", + "-strip", "-trim", "{}[0]".format(self.document_path), out_path ) @@ -77,6 +78,7 @@ def get_thumbnail(self): self.CONVERT, "-scale", "500x5000", "-alpha", "remove", + "-strip", "-trim", gs_out_path, out_path ) From ba5241619a3b8ef577081933f7017b7a1ceea4f6 Mon Sep 17 00:00:00 2001 From: schwabelbauch <9861962+schwabelbauch@users.noreply.github.com> Date: Wed, 27 Mar 2019 22:22:20 +0100 Subject: [PATCH 40/47] Update docker-entrypoint.sh fixed issue with installing tesseract languages --- scripts/docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh index 76d87ec5b..5cfcd4023 100644 --- a/scripts/docker-entrypoint.sh +++ b/scripts/docker-entrypoint.sh @@ -82,7 +82,7 @@ install_languages() { if apk info -e "$pkg" > /dev/null 2>&1; then continue fi - if ! apk info "$pkg" > /dev/null 2>&1; then + if ! apk --no-cache info "$pkg" > /dev/null 2>&1; then continue fi From dc5eb1387eaa38940fecc45279f72826a8141454 Mon Sep 17 00:00:00 2001 From: JensPfeifle Date: Mon, 1 Apr 2019 19:50:27 +0200 Subject: [PATCH 41/47] update coveralls link --- README-de.md | 2 +- README-el.md | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README-de.md b/README-de.md index bc7aa4709..e3314836a 100644 --- a/README-de.md +++ b/README-de.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Dokumentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) [![Danke](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Indexiere und archiviere alle deine eingescannten Papierdokumente diff --git a/README-el.md b/README-el.md index 36edca63d..de62a7516 100644 --- a/README-el.md +++ b/README-el.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Ευρετήριο και αρχείο για όλα σας τα σκαναρισμένα έγγραφα diff --git a/README.md b/README.md index 5031c14aa..2ab9dde84 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/danielquinn/paperless/badge.svg?branch=master)](https://coveralls.io/github/danielquinn/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Index and archive all of your scanned paper documents From 117726ec725e48ffd48b786b6e002f6bee5abe51 Mon Sep 17 00:00:00 2001 From: domphonallmen <35965315+domphonallmen@users.noreply.github.com> Date: Tue, 2 Apr 2019 11:38:00 +0200 Subject: [PATCH 42/47] avoid error when decrypting files with non-ascii character --- src/documents/management/commands/change_storage_type.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/management/commands/change_storage_type.py b/src/documents/management/commands/change_storage_type.py index 668f534a9..9fc82adce 100644 --- a/src/documents/management/commands/change_storage_type.py +++ b/src/documents/management/commands/change_storage_type.py @@ -75,7 +75,7 @@ def __gpg_to_unencrypted(passphrase): for document in encrypted_files: - print(coloured("Decrypting {}".format(document), "green")) + print(coloured("Decrypting {}".format(document).encode('utf-8'), "green")) old_paths = [document.source_path, document.thumbnail_path] raw_document = GnuPG.decrypted(document.source_file, passphrase) From e92f736b5b3760966ab6905414f9050349dc366e Mon Sep 17 00:00:00 2001 From: Dominik von Allmen <35965315+domphonallmen@users.noreply.github.com> Date: Tue, 2 Apr 2019 14:12:00 +0200 Subject: [PATCH 43/47] Update change_storage_type.py --- src/documents/management/commands/change_storage_type.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/documents/management/commands/change_storage_type.py b/src/documents/management/commands/change_storage_type.py index 9fc82adce..344d3388d 100644 --- a/src/documents/management/commands/change_storage_type.py +++ b/src/documents/management/commands/change_storage_type.py @@ -75,7 +75,8 @@ def __gpg_to_unencrypted(passphrase): for document in encrypted_files: - print(coloured("Decrypting {}".format(document).encode('utf-8'), "green")) + print(coloured("Decrypting {}".format( + document).encode('utf-8'), "green")) old_paths = [document.source_path, document.thumbnail_path] raw_document = GnuPG.decrypted(document.source_file, passphrase) From 83e045a1205bf1795c4b97a1d810f0fff98246fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Mon, 1 Apr 2019 16:07:33 +0200 Subject: [PATCH 44/47] Deploy Docker image --- .travis.yml | 22 ++++++++++++++++++++-- ci/deploy-docker | 15 +++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100755 ci/deploy-docker diff --git a/.travis.yml b/.travis.yml index fc96d8982..8773c486c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,11 @@ matrix: - python: "3.5" - python: "3.6" - python: "3.7-dev" - - env: BUILD_DOCKER=1 + - env: + - BUILD_DOCKER=1 + # Variable to add to publish the Docker image: + # * DOCKER_USERNAME + # * DOCKER_PASSWORD, to be encrypted, use `travis encrypt DOCKER_PASSWORD=` services: - docker before_install: @@ -20,7 +24,7 @@ matrix: install: - true script: - - docker build -t paperless . + - docker build --tag=the-paperless-project/paperless . after_success: - true @@ -37,3 +41,17 @@ script: after_success: - coveralls + +deploy: + - provider: script + skip_cleanup: true + script: ci/deploy-docker + on: + tags: true + condition: '"${BUILD_DOCKER}" = 1' + - provider: script + skip_cleanup: true + script: ci/deploy-docker + on: + branch: master + condition: '"${BUILD_DOCKER}" = 1' diff --git a/ci/deploy-docker b/ci/deploy-docker new file mode 100755 index 000000000..f8de0666a --- /dev/null +++ b/ci/deploy-docker @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ "${DOCKER_USERNAME}" == "" -o "${DOCKER_PASSWORD}" == "" ] +then + exit 0 +fi + +docker login --username=${DOCKER_USERNAME} --password=${DOCKER_PASSWORD} +if [ "${TRAVIS_TAG}" != "" ] +then + docker tag the-paperless-project/paperless the-paperless-project/paperless:${TRAVIS_TAG} + docker push the-paperless-project/paperless:${TRAVIS_TAG} +else + docker push the-paperless-project/paperless +fi From 9afde62964cd27eeda5381aaa9b0ec6a48636216 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Tue, 7 May 2019 12:13:42 +0200 Subject: [PATCH 45/47] requirements.txt: bring back Linux-only restriction for inotify-simple Fixes #418 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b98b44651..0885215c4 100755 --- a/requirements.txt +++ b/requirements.txt @@ -27,7 +27,7 @@ fuzzywuzzy[speedup]==0.15.0 gunicorn==19.9.0 idna==2.8 imagesize==1.1.0 -inotify-simple==1.1.8 +inotify-simple==1.1.8; sys_platform == 'linux' jinja2==2.10 langdetect==1.0.7 markupsafe==1.1.0 From 35e64a8c94a8a07a85b71b9cc3c713e53a57f363 Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Thu, 16 May 2019 10:14:15 +0100 Subject: [PATCH 46/47] Add a StackShare badge Fixes #538 --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d11bb4f92..11e0eee89 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,12 @@ ![Paperless](https://raw.githubusercontent.com/the-paperless-project/paperless/master/src/paperless/static/paperless/img/logo-dark.png) -[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) +[![Documentation](https://readthedocs.org/projects/paperless/badge/?version=latest)](https://paperless.readthedocs.org/) +[![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) +[![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) +[![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) +[![StackShare](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](https://stackshare.io/the-paperless-project/the-paperless-project) +[![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Index and archive all of your scanned paper documents From 30db07891896279c0e3e00823aeb905c2d21bb8b Mon Sep 17 00:00:00 2001 From: Daniel Quinn Date: Thu, 16 May 2019 16:47:46 +0100 Subject: [PATCH 47/47] Use https for the StackShare badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11e0eee89..6620665ee 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Chat](https://badges.gitter.im/the-paperless-project/paperless.svg)](https://gitter.im/danielquinn/paperless) [![Travis](https://travis-ci.org/the-paperless-project/paperless.svg?branch=master)](https://travis-ci.org/the-paperless-project/paperless) [![Coverage Status](https://coveralls.io/repos/github/the-paperless-project/paperless/badge.svg?branch=master)](https://coveralls.io/github/the-paperless-project/paperless?branch=master) -[![StackShare](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](https://stackshare.io/the-paperless-project/the-paperless-project) +[![StackShare](https://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](https://stackshare.io/the-paperless-project/the-paperless-project) [![Thanks](https://img.shields.io/badge/THANKS-md-ff69b4.svg)](https://github.com/the-paperless-project/paperless/blob/master/THANKS.md) Index and archive all of your scanned paper documents