Compare commits

...

1868 Commits

Author SHA1 Message Date
shamoon
15f4808fec Move to docs subdomain 2022-12-02 16:17:30 -08:00
Michael Shamoon
d531805597 fix base redirect 2022-12-02 15:51:00 -08:00
Michael Shamoon
304cfc42a9 redirect all RTD pages 2022-11-29 22:29:55 -08:00
Trenton Holmes
3e22e8e0b9 prepends the latest changelog 2022-11-27 19:24:28 -08:00
Trenton Holmes
dba45f93a4 Fixes the pre-commit command 2022-11-27 19:24:16 -08:00
Trenton Holmes
7b3ce6289f Bumps version number to 1.10.0 2022-11-27 17:21:12 -08:00
Trenton H
a16e8324be Merge pull request #1960 from paperless-ngx/beta
[Beta] Paperless-ngx v1.10.0 Release Candidate
2022-11-27 17:18:08 -08:00
shamoon
39de531df5 Merge pull request #2041 from paperless-ngx/l10n_dev
New Crowdin updates
2022-11-27 14:47:14 -08:00
Paperless-ngx Translation Bot [bot]
4764d4fd2b New translations django.po (German)
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
e147d4571f New translations django.po (German)
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
dc9aaa6472 New translations django.po (German)
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
8a061c4ac2 New translations messages.xlf (German)
[ci skip]
2022-11-27 14:44:33 -08:00
Michael Shamoon
d051c5c282 Remove ar-SA 2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
9e60810a8b New translations messages.xlf (Arabic)
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
96ee7990b2 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
224bfeb72e New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-27 14:44:33 -08:00
Paperless-ngx Translation Bot [bot]
c9d6c208af New translations django.po (German)
[ci skip]
2022-11-26 12:28:51 -08:00
Paperless-ngx Translation Bot [bot]
9f2b8b1734 New translations django.po (German)
[ci skip]
2022-11-26 09:54:00 -08:00
Paperless-ngx Translation Bot [bot]
a04b9e3755 New translations django.po (German)
[ci skip]
2022-11-22 15:21:31 -08:00
Paperless-ngx Translation Bot [bot]
a81d4c5e9d New translations messages.xlf (German)
[ci skip]
2022-11-22 15:21:30 -08:00
shamoon
2140d42098 Merge pull request #2025 from paperless-ngx/fix-redo-ocr-message
Add info that re-do OCR doesnt automatically refresh content
2022-11-22 14:35:34 -08:00
Michael Shamoon
43325371fc Remove ar-SA 2022-11-22 14:27:30 -08:00
Paperless-ngx Translation Bot [bot]
d10721089e New translations messages.xlf (Arabic)
[ci skip]
2022-11-22 14:27:30 -08:00
Paperless-ngx Translation Bot [bot]
f1a1a2da8b New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-22 14:25:36 -08:00
Paperless-ngx Translation Bot [bot]
612e0a1163 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-22 14:24:21 -08:00
Michael Shamoon
2a5dc4de38 Add info that re-do OCR doesnt automatically refresh content 2022-11-22 14:16:04 -08:00
shamoon
a5283525bc Merge pull request #2023 from paperless-ngx/fix/2019-create-date
Bugfix: Fix created_date being a string
2022-11-22 13:53:08 -08:00
Trenton H
de98d748a9 If override_date is provided, coerce it into a datetime 2022-11-22 10:11:27 -08:00
Trenton H
f015556562 Adds a test to cover this edge case 2022-11-22 07:22:41 -08:00
Trenton H
b897d6de2e Don't use the sidecar file when redoing the OCR, it only contains new text 2022-11-22 07:22:41 -08:00
Trenton H
54f20b381e Documents some issues and the required manual fixes for MariaDB 2022-11-22 07:03:01 -08:00
shamoon
c0d4248021 Merge pull request #1973 from paperless-ngx/l10n_dev
New Crowdin updates
2022-11-21 22:19:02 -08:00
Paperless-ngx Translation Bot [bot]
870e295aae New translations messages.xlf (German)
[ci skip]
2022-11-21 21:43:54 -08:00
shamoon
25d014d8ef Merge branch 'beta' into l10n_dev 2022-11-20 07:48:55 -08:00
shamoon
27f7f0a941 Merge pull request #1998 from paperless-ngx/fix/1993-date-overflow
Bugfix: Don't allow exceptions during date parsing to fail consume
2022-11-17 14:31:46 -08:00
shamoon
9f5fd6c3ba Merge pull request #1967 from paperless-ngx/feature-scripts-output
Feature: Capture stdout & stderr of the pre/post consume scripts
2022-11-17 14:30:23 -08:00
Trenton H
914661fdbb Don't allow an exception when trying to parse a date cause complete failure 2022-11-17 13:37:37 -08:00
Trenton H
0ae8200593 Fixes the link for flake8 to the new (?) GitHub repo 2022-11-14 15:47:22 -08:00
Michael Shamoon
023c931401 Fix top search not working due to missing button type 2022-11-13 07:11:45 -08:00
Paperless-ngx Translation Bot [bot]
9ec89762a3 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-12 09:31:54 -08:00
Michael Shamoon
fa47595ac8 remove ar_SA
[ci skip]
2022-11-12 08:58:01 -08:00
Paperless-ngx Translation Bot [bot]
79f5019b40 New Crowdin updates (#1971)
* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations django.po (Italian)
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Croatian)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Arabic)
[ci skip]

* Remove ar-SA

* remote ar other than ar-ar

Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
2022-11-12 08:53:52 -08:00
Michael Shamoon
756ce2f9d8 Merge branch 'dev' into beta 2022-11-12 08:33:43 -08:00
Michael Shamoon
d47122340a Add translation strings for welcome tour buttons 2022-11-12 08:31:25 -08:00
Trenton H
3dfeee9332 Don't do decoding work if not needed 2022-11-11 10:09:56 -08:00
Trenton H
057f6016cc Adds further testing to cover scripts with non-zero exit codes 2022-11-11 08:58:49 -08:00
Trenton H
c4965580de Fixes stderr appearing to have content when it doesn't 2022-11-10 19:01:54 -08:00
Trenton Holmes
9a47963fd5 Captures the stdout and stderr of the pre/post scripts into the log 2022-11-10 17:26:47 -08:00
Trenton H
50a211f367 Fixes an issue with the install of languages and read-only variable 2022-11-10 17:25:39 -08:00
shamoon
5f278d7fbb Merge pull request #1956 from paperless-ngx/l10n_dev
New Crowdin updates
2022-11-09 21:37:29 -08:00
Paperless-ngx Translation Bot [bot]
a17d251913 New translations django.po (Serbian (Latin))
[ci skip]
2022-11-09 15:12:37 -08:00
Paperless-ngx Translation Bot [bot]
1cbf088656 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-09 15:12:36 -08:00
Paperless-ngx Translation Bot [bot]
d3254d6bcf New translations messages.xlf (Luxembourgish)
[ci skip]
2022-11-09 15:12:35 -08:00
Paperless-ngx Translation Bot [bot]
1543729c7b New translations messages.xlf (Croatian)
[ci skip]
2022-11-09 15:12:34 -08:00
Paperless-ngx Translation Bot [bot]
ef2a96c34b New translations messages.xlf (Portuguese, Brazilian)
[ci skip]
2022-11-09 15:12:32 -08:00
Paperless-ngx Translation Bot [bot]
656b1e150f New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-11-09 15:12:31 -08:00
Paperless-ngx Translation Bot [bot]
e0f61003cf New translations messages.xlf (Turkish)
[ci skip]
2022-11-09 15:12:30 -08:00
Paperless-ngx Translation Bot [bot]
1ca98678cd New translations messages.xlf (Swedish)
[ci skip]
2022-11-09 15:12:28 -08:00
Paperless-ngx Translation Bot [bot]
9919cc1956 New translations messages.xlf (Slovenian)
[ci skip]
2022-11-09 15:12:27 -08:00
Paperless-ngx Translation Bot [bot]
d2096e3c05 New translations messages.xlf (Portuguese)
[ci skip]
2022-11-09 15:12:26 -08:00
Paperless-ngx Translation Bot [bot]
5f2b508b7a New translations messages.xlf (Polish)
[ci skip]
2022-11-09 15:12:24 -08:00
Paperless-ngx Translation Bot [bot]
752d4f4249 New translations django.po (German)
[ci skip]
2022-11-09 15:12:23 -08:00
Paperless-ngx Translation Bot [bot]
72e7d5150e New translations messages.xlf (Norwegian)
[ci skip]
2022-11-09 15:12:22 -08:00
Paperless-ngx Translation Bot [bot]
42a9e05a7f New translations messages.xlf (Italian)
[ci skip]
2022-11-09 15:12:21 -08:00
Paperless-ngx Translation Bot [bot]
b4add2ed55 New translations messages.xlf (Hebrew)
[ci skip]
2022-11-09 15:12:19 -08:00
Paperless-ngx Translation Bot [bot]
ed7d9295bd New translations messages.xlf (Finnish)
[ci skip]
2022-11-09 15:12:18 -08:00
Paperless-ngx Translation Bot [bot]
5b7b1b2349 New translations messages.xlf (Danish)
[ci skip]
2022-11-09 15:12:16 -08:00
Paperless-ngx Translation Bot [bot]
d5c930acc9 New translations messages.xlf (Czech)
[ci skip]
2022-11-09 15:12:15 -08:00
Paperless-ngx Translation Bot [bot]
4c93d6d7e6 New translations messages.xlf (Belarusian)
[ci skip]
2022-11-09 15:12:14 -08:00
Paperless-ngx Translation Bot [bot]
066f3264fb New translations messages.xlf (Spanish)
[ci skip]
2022-11-09 15:12:12 -08:00
Paperless-ngx Translation Bot [bot]
88a803f949 New translations messages.xlf (French)
[ci skip]
2022-11-09 15:12:11 -08:00
Paperless-ngx Translation Bot [bot]
e69615dc06 New translations messages.xlf (Romanian)
[ci skip]
2022-11-09 15:12:10 -08:00
Paperless-ngx Translation Bot [bot]
a1e0840e24 New translations messages.xlf (Dutch)
[ci skip]
2022-11-09 15:12:08 -08:00
Paperless-ngx Translation Bot [bot]
d814353e83 New translations messages.xlf (German)
[ci skip]
2022-11-09 15:12:07 -08:00
Paperless-ngx Translation Bot [bot]
06d7845eca New translations django.po (Dutch)
[ci skip]
2022-11-09 15:12:04 -08:00
Paperless-ngx Translation Bot [bot]
ae8682c7a5 New translations django.po (Romanian)
[ci skip]
2022-11-09 15:12:03 -08:00
Paperless-ngx Translation Bot [bot]
c9c0b3d430 New translations django.po (Luxembourgish)
[ci skip]
2022-11-09 15:12:02 -08:00
Paperless-ngx Translation Bot [bot]
cc46fc7e4b New translations django.po (Croatian)
[ci skip]
2022-11-09 15:12:01 -08:00
Paperless-ngx Translation Bot [bot]
d1b1ba21cd New translations django.po (Portuguese, Brazilian)
[ci skip]
2022-11-09 15:12:00 -08:00
Paperless-ngx Translation Bot [bot]
a009417a99 New translations django.po (Chinese Simplified)
[ci skip]
2022-11-09 15:11:59 -08:00
Paperless-ngx Translation Bot [bot]
775da720ec New translations django.po (Turkish)
[ci skip]
2022-11-09 15:11:58 -08:00
Paperless-ngx Translation Bot [bot]
aeae6ea0d3 New translations django.po (Swedish)
[ci skip]
2022-11-09 15:11:57 -08:00
Paperless-ngx Translation Bot [bot]
0ae46d2269 New translations django.po (Slovenian)
[ci skip]
2022-11-09 15:11:56 -08:00
Paperless-ngx Translation Bot [bot]
0e7f1ec0de New translations django.po (Russian)
[ci skip]
2022-11-09 15:11:55 -08:00
Paperless-ngx Translation Bot [bot]
13cd55b96f New translations django.po (Portuguese)
[ci skip]
2022-11-09 15:11:53 -08:00
Paperless-ngx Translation Bot [bot]
9139e807ec New translations messages.xlf (Arabic)
[ci skip]
2022-11-09 15:11:52 -08:00
Paperless-ngx Translation Bot [bot]
53616f6625 New translations django.po (Polish)
[ci skip]
2022-11-09 15:11:51 -08:00
Paperless-ngx Translation Bot [bot]
526fdf1153 New translations django.po (Italian)
[ci skip]
2022-11-09 15:11:50 -08:00
Paperless-ngx Translation Bot [bot]
fc4aceb0ee New translations django.po (Hebrew)
[ci skip]
2022-11-09 15:11:49 -08:00
Paperless-ngx Translation Bot [bot]
3d8421b718 New translations django.po (Finnish)
[ci skip]
2022-11-09 15:11:48 -08:00
Paperless-ngx Translation Bot [bot]
6cebceda15 New translations django.po (Danish)
[ci skip]
2022-11-09 15:11:47 -08:00
Paperless-ngx Translation Bot [bot]
e1fd6bda19 New translations django.po (Czech)
[ci skip]
2022-11-09 15:11:46 -08:00
Paperless-ngx Translation Bot [bot]
fd34414b17 New translations django.po (Belarusian)
[ci skip]
2022-11-09 15:11:45 -08:00
Paperless-ngx Translation Bot [bot]
3ce1886a54 New translations django.po (Arabic)
[ci skip]
2022-11-09 15:11:44 -08:00
Paperless-ngx Translation Bot [bot]
8ed43779a8 New translations django.po (Spanish)
[ci skip]
2022-11-09 15:11:43 -08:00
Paperless-ngx Translation Bot [bot]
a7949b3e22 New translations django.po (French)
[ci skip]
2022-11-09 15:11:42 -08:00
Paperless-ngx Translation Bot [bot]
19c293c3e6 New translations django.po (Norwegian)
[ci skip]
2022-11-09 15:11:41 -08:00
Paperless-ngx Translation Bot [bot]
ccb1ec4ff5 New translations messages.xlf (Russian)
[ci skip]
2022-11-09 15:11:40 -08:00
Trenton H
e5106bdca0 Updates the version strings to 1.10.0 2022-11-09 14:00:09 -08:00
Trenton H
ba1366f49a Merge branch 'dev' into beta 2022-11-09 13:51:10 -08:00
Michael Shamoon
1dc271723c Update translation files 2022-11-09 13:51:06 -08:00
shamoon
f3b3db30a2 Merge pull request #1689 from paperless-ngx/l10n_dev
New Crowdin updates
2022-11-09 13:45:25 -08:00
Michael Shamoon
69241ce394 Merge branch 'dev' into l10n_dev 2022-11-09 13:43:29 -08:00
Trenton H
10f6195bac Always use pikepdf, then pdf2image if needed to check for barcodes instead of requiring/allowing configuration 2022-11-09 13:01:39 -08:00
Trenton H
1d0cf77e7e Downgrades cryptography to the last built version on piwheels 2022-11-09 12:12:23 -08:00
Trenton H
beea3eb7eb Releases constraints on some packages and updates everything 2022-11-09 08:51:46 -08:00
Trenton H
a7b5b98174 Fixes the paths to binaries 2022-11-08 08:52:01 -08:00
Trenton Holmes
046d43fbe8 Limits tamper check find to depth 1, as only files at the first level could be run 2022-11-08 08:52:01 -08:00
Trenton Holmes
8023aae738 Adds local and readonly to almost everything. Fully qualifies the path to binaries 2022-11-08 08:52:01 -08:00
Trenton Holmes
2a9bb55559 It's not a customer 2022-11-08 08:52:01 -08:00
Trenton Holmes
e635bfedc5 Corrects the ls command redirection 2022-11-08 08:52:01 -08:00
Trenton Holmes
be64552092 Adds an untested custom startup functionality 2022-11-08 08:52:01 -08:00
Michael Shamoon
91a2dedfec Celery JSON serializable object for override_tag_ids 2022-11-07 07:41:23 -08:00
Paperless-ngx Translation Bot [bot]
069e0a1903 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-11-06 05:11:35 -08:00
shamoon
39149a891c Merge pull request #1934 from paperless-ngx/fix/issue-1933
Fix mail consumption broken in `dev` after move to celery
2022-11-05 21:47:39 -07:00
Michael Shamoon
daa49ee7c8 Remote outdated task_name parameter 2022-11-05 17:51:56 -07:00
Trenton H
7e3e0a0fa6 Refresh the instance from the database before doing any file handling with it 2022-11-03 11:32:27 -07:00
Trenton Holmes
3c325582d9 Try waiting a little bit after a parser error during the live testing 2022-11-02 15:55:12 -07:00
Paperless-ngx Translation Bot [bot]
e5012cdc5f New translations messages.xlf (Portuguese)
[ci skip]
2022-11-02 05:07:00 -07:00
dependabot[bot]
853d13b6f2 Bump tj-actions/changed-files from 32 to 34
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 32 to 34.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v32...v34)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 15:34:17 -07:00
dependabot[bot]
449fa9bf48 Bump scikit-learn from 1.1.2 to 1.1.3
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/1.1.2...1.1.3)

---
updated-dependencies:
- dependency-name: scikit-learn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 14:51:50 -07:00
dependabot[bot]
0a6828517a Merge pull request #1910 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/platform-browser-14.2.8 2022-11-01 21:18:19 +00:00
shamoon
8585e77ccd Merge pull request #1911 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-ui-tour-ng-bootstrap-11.1.0
Bump ngx-ui-tour-ng-bootstrap from 11.0.0 to 11.1.0 in /src-ui
2022-11-01 14:08:56 -07:00
Michael Shamoon
db32431bcc Bump angular packages 2022-11-01 14:07:55 -07:00
dependabot[bot]
e2d826b4ea Bump ngx-ui-tour-ng-bootstrap from 11.0.0 to 11.1.0 in /src-ui
Bumps [ngx-ui-tour-ng-bootstrap](https://github.com/hakimio/ngx-ui-tour) from 11.0.0 to 11.1.0.
- [Release notes](https://github.com/hakimio/ngx-ui-tour/releases)
- [Commits](https://github.com/hakimio/ngx-ui-tour/commits)

---
updated-dependencies:
- dependency-name: ngx-ui-tour-ng-bootstrap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 21:05:11 +00:00
shamoon
06f1a4f744 Merge pull request #1914 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-environment-jsdom-29.2.2
Bump jest-environment-jsdom from 29.1.2 to 29.2.2 in /src-ui
2022-11-01 14:02:59 -07:00
dependabot[bot]
d09bb563a7 Bump jest-environment-jsdom from 29.1.2 to 29.2.2 in /src-ui
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.1.2 to 29.2.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.2.2/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 20:17:34 +00:00
dependabot[bot]
0fafecc6a4 Bump @angular/platform-browser from 14.2.4 to 14.2.8 in /src-ui
Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 14.2.4 to 14.2.8.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/14.2.8/packages/platform-browser)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 20:16:10 +00:00
Trenton Holmes
66b60654d9 Fixes missing lxml and tweaks commenting 2022-11-01 12:42:03 -07:00
Trenton Holmes
b479027f3d Adds a couple build args to force pikepdf to rebuild dependent wheels if the versions change 2022-11-01 12:42:03 -07:00
Trenton Holmes
0a81439415 No need for an extra import, the object is smart already 2022-11-01 08:44:30 -07:00
Trenton Holmes
4fcaa72886 Adds more options for the filename formatting 2022-11-01 08:44:30 -07:00
dependabot[bot]
9acb00dcba Bump pillow from 9.2.0 to 9.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.2.0 to 9.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.2.0...9.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 08:04:25 -07:00
dependabot[bot]
ebc453d720 Bump pytest from 7.1.3 to 7.2.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.3 to 7.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.3...7.2.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 19:00:17 -07:00
dependabot[bot]
770d72c3e8 Bump tox from 3.26.0 to 3.27.0
Bumps [tox](https://github.com/tox-dev/tox) from 3.26.0 to 3.27.0.
- [Release notes](https://github.com/tox-dev/tox/releases)
- [Changelog](https://github.com/tox-dev/tox/blob/master/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/tox/compare/3.26.0...3.27.0)

---
updated-dependencies:
- dependency-name: tox
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 17:56:19 -07:00
Max Bachmann
e97c04c03d directly use rapidfuzz 2022-10-31 13:17:10 -07:00
shamoon
34a0111ff5 update logs section 2022-10-31 13:06:17 -07:00
Trenton H
9214b41255 Fixes deleting images if the branch API returns an error code and makes the error code a failure 2022-10-31 12:46:25 -07:00
shamoon
0d941bfb05 Merge pull request #1886 from paperless-ngx/1.9.2-ui-tweaks
Feature: 1.9.2 UI tweaks
2022-10-31 12:42:13 -07:00
Paperless-ngx Translation Bot [bot]
4c68d28a6f New translations messages.xlf (German)
[ci skip]
2022-10-30 15:40:57 -07:00
shamoon
b511b084d0 Update matrix url
[ci skip]
2022-10-30 06:48:41 -07:00
Paperless-ngx Translation Bot [bot]
f2939583d7 New translations messages.xlf (Arabic)
[ci skip]
2022-10-29 23:28:44 -07:00
Paperless-ngx Translation Bot [bot]
5951b0d946 New translations messages.xlf (Romanian)
[ci skip]
2022-10-29 23:28:43 -07:00
Paperless-ngx Translation Bot [bot]
bf088c427a New translations messages.xlf (French)
[ci skip]
2022-10-29 23:28:42 -07:00
Paperless-ngx Translation Bot [bot]
ef1eead52e New translations messages.xlf (Spanish)
[ci skip]
2022-10-29 23:28:40 -07:00
Paperless-ngx Translation Bot [bot]
f77a431554 New translations messages.xlf (Belarusian)
[ci skip]
2022-10-29 23:28:39 -07:00
Paperless-ngx Translation Bot [bot]
cb930d1e76 New translations messages.xlf (Czech)
[ci skip]
2022-10-29 23:28:38 -07:00
Paperless-ngx Translation Bot [bot]
c4db7f7b6d New translations messages.xlf (Danish)
[ci skip]
2022-10-29 23:28:36 -07:00
Paperless-ngx Translation Bot [bot]
a24524fb81 New translations messages.xlf (Finnish)
[ci skip]
2022-10-29 23:28:35 -07:00
Paperless-ngx Translation Bot [bot]
9e253fcc62 New translations messages.xlf (Hebrew)
[ci skip]
2022-10-29 23:28:34 -07:00
Paperless-ngx Translation Bot [bot]
490dee2e90 New translations messages.xlf (Italian)
[ci skip]
2022-10-29 23:28:32 -07:00
Paperless-ngx Translation Bot [bot]
a2032b9979 New translations messages.xlf (Dutch)
[ci skip]
2022-10-29 23:28:31 -07:00
Paperless-ngx Translation Bot [bot]
1561f561d9 New translations messages.xlf (German)
[ci skip]
2022-10-29 23:28:30 -07:00
Paperless-ngx Translation Bot [bot]
6246bfaf28 New translations messages.xlf (Norwegian)
[ci skip]
2022-10-29 23:28:29 -07:00
Paperless-ngx Translation Bot [bot]
57763d0c0b New translations messages.xlf (Portuguese)
[ci skip]
2022-10-29 23:28:28 -07:00
Paperless-ngx Translation Bot [bot]
d441c8a26e New translations messages.xlf (Slovenian)
[ci skip]
2022-10-29 23:28:26 -07:00
Paperless-ngx Translation Bot [bot]
54abeff63a New translations messages.xlf (Swedish)
[ci skip]
2022-10-29 23:28:25 -07:00
Paperless-ngx Translation Bot [bot]
dc045761d9 New translations messages.xlf (Turkish)
[ci skip]
2022-10-29 23:28:24 -07:00
Paperless-ngx Translation Bot [bot]
393c208cfd New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-10-29 23:28:22 -07:00
Paperless-ngx Translation Bot [bot]
11f9bc898a New translations messages.xlf (Portuguese, Brazilian)
[ci skip]
2022-10-29 23:28:21 -07:00
Paperless-ngx Translation Bot [bot]
a31089ca6e New translations messages.xlf (Croatian)
[ci skip]
2022-10-29 23:28:19 -07:00
Paperless-ngx Translation Bot [bot]
0355fa2cb6 New translations messages.xlf (Luxembourgish)
[ci skip]
2022-10-29 23:28:18 -07:00
Paperless-ngx Translation Bot [bot]
73b945a9f3 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-10-29 23:28:17 -07:00
Paperless-ngx Translation Bot [bot]
396dd9ae1c New translations messages.xlf (Polish)
[ci skip]
2022-10-29 23:28:16 -07:00
Paperless-ngx Translation Bot [bot]
b026dcc6ae New translations messages.xlf (Russian)
[ci skip]
2022-10-29 23:28:15 -07:00
Michael Shamoon
36d2286d03 Update messages.xlf 2022-10-29 23:19:35 -07:00
shamoon
ea992e92f5 Merge pull request #1860 from paperless-ngx/dependabot/pip/dev/zipp-3.10.0
Bump zipp from 3.9.0 to 3.10.0
2022-10-29 23:17:02 -07:00
shamoon
d6b5c733f3 Merge pull request #1868 from paperless-ngx/fix/issue-1866
Fix: independent control of saved views
2022-10-29 23:15:28 -07:00
Michael Shamoon
7efdce44f7 Implement warning on close unsaved view 2022-10-29 23:14:33 -07:00
Michael Shamoon
9b3243533c better positioning in clearable badges 2022-10-29 15:29:50 -07:00
Michael Shamoon
0993fc07a3 Add "clearable" badge 2022-10-29 15:03:27 -07:00
Michael Shamoon
28f7b0dc13 Use check badge for dropdowns 2022-10-29 14:07:45 -07:00
Michael Shamoon
bd64684fa4 support esc and x button for main search bar 2022-10-29 14:07:31 -07:00
Michael Shamoon
a9abffaddc Support keyboard esc and X button for filter editor text field 2022-10-29 14:07:31 -07:00
Michael Shamoon
89e0f8e3ef fix filterable dropdown corner radius 2022-10-29 14:07:31 -07:00
shamoon
9e91440245 Merge pull request #1865 from paperless-ngx/fix-relative-dates
Fix: frontend relative date searches
2022-10-29 14:05:35 -07:00
shamoon
4a24ba51c5 Merge pull request #1876 from astubenbord/main
Added new application to list of affiliated projects
2022-10-28 22:22:08 -07:00
Anton Stubenbord
d5fb98b7c4 Added new application to list of affiliated projects 2022-10-28 22:21:27 -07:00
Sblop
cda0a19b99 Update settings.py
Comment too long.
2022-10-28 14:40:48 -07:00
Sblop
932a285b82 Update settings.py 2022-10-28 14:40:48 -07:00
Sblop
c414de9c35 Update settings.py
Django gives a system error on MariaDB on VARCHARs longer than 255 chars. This was a limitation in older versions of mysql.
Meaning: You cannot run Paperless-NGX on older version were this limitation were present, meaning Django plays it extremely safe by giving an error.
This fixes this problem.
2022-10-28 14:40:48 -07:00
Trenton Holmes
9b82ab95fb Updates to the latest pre-commit hook versions 2022-10-27 13:50:08 -07:00
Trenton Holmes
aa5aff246b Locks pipenv to the latest, last working version 2022-10-27 13:50:08 -07:00
Paperless-ngx Translation Bot [bot]
c6a484439d New translations django.po (Dutch)
[ci skip]
2022-10-27 02:51:17 -07:00
Michael Shamoon
1b55717cc7 Allow independent saved view control 2022-10-26 12:54:44 -07:00
Michael Shamoon
dc1da7cb24 Retain saved view filters when changing a saved view 2022-10-26 10:39:09 -07:00
Michael Shamoon
8652b7ddb0 Fix switch from title_content search 2022-10-25 15:31:01 -07:00
Michael Shamoon
84b3fee0f9 Fix losing search when adding relative date 2022-10-25 13:43:13 -07:00
Michael Shamoon
b52cb193e1 Remove relative date query strings from dropdown 2022-10-25 13:34:36 -07:00
Michael Shamoon
6a00d5e08a Implement relative date querying 2022-10-25 12:45:15 -07:00
dependabot[bot]
3357fa19f3 Bump pytest-env from 0.6.2 to 0.8.1
Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 0.6.2 to 0.8.1.
- [Release notes](https://github.com/pytest-dev/pytest-env/releases)
- [Commits](https://github.com/pytest-dev/pytest-env/compare/0.6.2...0.8.1)

---
updated-dependencies:
- dependency-name: pytest-env
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 07:26:43 -07:00
shamoon
37a892d461 Merge pull request #1858 from paperless-ngx/fix/1850-barcode-password
Bugfix: Handle password protected PDFs during barcode detection
2022-10-24 23:17:48 -07:00
dependabot[bot]
f149f9ccb1 Bump zipp from 3.9.0 to 3.10.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/CHANGES.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.9.0...v3.10.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 20:34:44 +00:00
Trenton H
d52fbbb040 More smoothly handle the case of a password protected PDF for barcodes 2022-10-24 13:16:14 -07:00
Paperless-ngx Translation Bot [bot]
446eca4ac3 New translations messages.xlf (German)
[ci skip]
2022-10-24 13:11:59 -07:00
Trenton H
f8ce6285df Allows using pdf2image instead of pikepdf if desired 2022-10-24 09:58:34 -07:00
Trenton H
0a19ad4edb Resolves the conflicts with a lock 2022-10-24 09:17:38 -07:00
Trenton H
ab69961b5c Integrates an optional starting of Flower into the Docker image 2022-10-24 09:17:38 -07:00
Michael Shamoon
1400dba12c Fix frontend task name display 2022-10-24 09:10:10 -07:00
Trenton H
a72cc5da83 Connects up the celery signals to support pending, started and success/failure, without relying on django-celery-results 2022-10-24 09:10:10 -07:00
Paperless-ngx Translation Bot [bot]
630b8fa675 New translations messages.xlf (Arabic)
[ci skip]
2022-10-23 22:19:58 -07:00
Paperless-ngx Translation Bot [bot]
43514ad477 New translations messages.xlf (Romanian)
[ci skip]
2022-10-23 22:19:57 -07:00
Paperless-ngx Translation Bot [bot]
0ed95547d5 New translations messages.xlf (French)
[ci skip]
2022-10-23 22:19:56 -07:00
Paperless-ngx Translation Bot [bot]
250e2d54b4 New translations messages.xlf (Spanish)
[ci skip]
2022-10-23 22:19:54 -07:00
Paperless-ngx Translation Bot [bot]
b02cd541a8 New translations messages.xlf (Belarusian)
[ci skip]
2022-10-23 22:19:53 -07:00
Paperless-ngx Translation Bot [bot]
94f2a2ce33 New translations messages.xlf (Czech)
[ci skip]
2022-10-23 22:19:52 -07:00
Paperless-ngx Translation Bot [bot]
6a7c0279bf New translations messages.xlf (Danish)
[ci skip]
2022-10-23 22:19:50 -07:00
Paperless-ngx Translation Bot [bot]
5ba11b1161 New translations messages.xlf (Finnish)
[ci skip]
2022-10-23 22:19:49 -07:00
Paperless-ngx Translation Bot [bot]
917bce301c New translations messages.xlf (Hebrew)
[ci skip]
2022-10-23 22:19:48 -07:00
Paperless-ngx Translation Bot [bot]
3fb32c5cf1 New translations messages.xlf (Italian)
[ci skip]
2022-10-23 22:19:47 -07:00
Paperless-ngx Translation Bot [bot]
19a1bf0f5f New translations messages.xlf (Dutch)
[ci skip]
2022-10-23 22:19:45 -07:00
Paperless-ngx Translation Bot [bot]
abe8e678ea New translations messages.xlf (German)
[ci skip]
2022-10-23 22:19:44 -07:00
Paperless-ngx Translation Bot [bot]
d16dee61fa New translations messages.xlf (Norwegian)
[ci skip]
2022-10-23 22:19:43 -07:00
Paperless-ngx Translation Bot [bot]
e7b22b15c6 New translations messages.xlf (Portuguese)
[ci skip]
2022-10-23 22:19:41 -07:00
Paperless-ngx Translation Bot [bot]
0f62770bce New translations messages.xlf (Slovenian)
[ci skip]
2022-10-23 22:19:40 -07:00
Paperless-ngx Translation Bot [bot]
c67cff4f0e New translations messages.xlf (Swedish)
[ci skip]
2022-10-23 22:19:39 -07:00
Paperless-ngx Translation Bot [bot]
dccb9227a2 New translations messages.xlf (Turkish)
[ci skip]
2022-10-23 22:19:37 -07:00
Paperless-ngx Translation Bot [bot]
b7db1cf2c1 New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-10-23 22:19:36 -07:00
Paperless-ngx Translation Bot [bot]
3d683d13b8 New translations messages.xlf (Portuguese, Brazilian)
[ci skip]
2022-10-23 22:19:35 -07:00
Paperless-ngx Translation Bot [bot]
310c89ffdf New translations messages.xlf (Croatian)
[ci skip]
2022-10-23 22:19:33 -07:00
Paperless-ngx Translation Bot [bot]
dd069d753b New translations messages.xlf (Luxembourgish)
[ci skip]
2022-10-23 22:19:32 -07:00
Paperless-ngx Translation Bot [bot]
27a24f10b3 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-10-23 22:19:31 -07:00
Paperless-ngx Translation Bot [bot]
b6b9bf0e3c New translations messages.xlf (Polish)
[ci skip]
2022-10-23 22:19:29 -07:00
Paperless-ngx Translation Bot [bot]
5fc7350ea0 New translations messages.xlf (Russian)
[ci skip]
2022-10-23 22:19:28 -07:00
Michael Shamoon
9b01c96846 Grammar error, updated frontend translation
https://crowdin.com/translate/paperless-ngx/16/en-it?filter=basic&value=0#
2022-10-23 22:11:24 -07:00
Paperless-ngx Translation Bot [bot]
96aba9acdc New translations messages.xlf (Italian)
[ci skip]
2022-10-23 07:21:03 -07:00
Paperless-ngx Translation Bot [bot]
43e78c8e69 New translations messages.xlf (Italian)
[ci skip]
2022-10-23 06:22:29 -07:00
Paperless-ngx Translation Bot [bot]
47d0c77970 New translations messages.xlf (Dutch)
[ci skip]
2022-10-22 00:48:54 -07:00
Paperless-ngx Translation Bot [bot]
f825b5772d New translations messages.xlf (Arabic)
[ci skip]
2022-10-20 17:27:27 -07:00
Paperless-ngx Translation Bot [bot]
f9cb95e79c New translations messages.xlf (Arabic)
[ci skip]
2022-10-20 16:30:33 -07:00
Paperless-ngx Translation Bot [bot]
73845ef968 New translations django.po (Arabic)
[ci skip]
2022-10-20 16:30:32 -07:00
Michael Shamoon
8be6c707de Update django.po
[ci skip]
2022-10-20 15:33:16 -07:00
Michael Shamoon
60f76d3e1f rename backend Arabic translation file
[ci skip]
2022-10-20 15:31:28 -07:00
Paperless-ngx Translation Bot [bot]
912dc9a847 New translations messages.xlf (Arabic)
[ci skip]
2022-10-20 15:29:29 -07:00
Paperless-ngx Translation Bot [bot]
70ef6412eb New translations django.po (Arabic)
[ci skip]
2022-10-20 15:28:49 -07:00
Michael Shamoon
99db828d49 Merge branch 'dev' of github.com:paperless-ngx/paperless-ngx into dev 2022-10-20 15:28:15 -07:00
Michael Shamoon
3c5b647303 rename Arabic translation file
[skip ci]
2022-10-20 15:28:10 -07:00
Trenton Holmes
d1aa08850d Reverts the change around skip_noarchive to align with how it is documented to work 2022-10-20 13:34:41 -07:00
dependabot[bot]
53e8d84af2 Bump sphinx from 5.2.3 to 5.3.0
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.2.3 to 5.3.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.2.3...v5.3.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-20 13:10:14 -07:00
Trenton H
4c7242df6d Even more commenting 2022-10-20 12:42:40 -07:00
Trenton H
a231b92644 Corrects the script name 2022-10-20 12:42:40 -07:00
Trenton H
c3a62268c7 Simplifies the image tag cleanup into classes, fixes the library images caring about feature branches 2022-10-20 12:42:40 -07:00
Michael Shamoon
69913ae250 Remove legacy translation files
[ci ckip]
2022-10-19 21:44:47 -07:00
Michael Shamoon
a2da1acdd7 Fix button styles broken by bootstrap update 2022-10-18 14:30:31 -07:00
Paperless-ngx Translation Bot [bot]
a67ea8ffd9 New translations messages.xlf (Czech)
[ci skip]
2022-10-18 14:06:43 -07:00
Paperless-ngx Translation Bot [bot]
0050a20710 New translations django.po (Czech)
[ci skip]
2022-10-18 13:06:11 -07:00
Paperless-ngx Translation Bot [bot]
ad65360a55 New translations messages.xlf (Czech)
[ci skip]
2022-10-18 13:06:10 -07:00
shamoon
15bcb2491c Merge pull request #1792 from paperless-ngx/fix/issue-1791
Fix: missing loadViewConfig breaks loading saved view
2022-10-17 14:30:30 -07:00
Paperless-ngx Translation Bot [bot]
2a2fa90cf9 New translations messages.xlf (French)
[ci skip]
2022-10-17 12:49:11 -07:00
Paperless-ngx Translation Bot [bot]
6e9fbdb8ed New translations messages.xlf (Belarusian)
[ci skip]
2022-10-16 07:46:24 -07:00
Paperless-ngx Translation Bot [bot]
097ab55f7a New translations django.po (Belarusian)
[ci skip]
2022-10-16 06:46:10 -07:00
Paperless-ngx Translation Bot [bot]
dddb82af23 New translations messages.xlf (Belarusian)
[ci skip]
2022-10-16 06:46:09 -07:00
Paperless-ngx Translation Bot [bot]
377c37dfab New translations django.po (Belarusian)
[ci skip]
2022-10-16 05:44:52 -07:00
Trenton H
0df0deb445 Downgrades and locks channels-redis to 3.4.1 to resolve issues with async_to_sync 2022-10-14 16:48:48 -07:00
Paperless-ngx Translation Bot [bot]
d05f803c16 New translations messages.xlf (French)
[ci skip]
2022-10-14 02:11:20 -07:00
Paperless-ngx Translation Bot [bot]
25e2ca5295 New translations messages.xlf (French)
[ci skip]
2022-10-14 01:01:03 -07:00
Michael Shamoon
02e8157fb9 Fix missing loadViewConfig breaks loading saved view 2022-10-13 12:27:41 -07:00
Paperless-ngx Translation Bot [bot]
708cac4683 New translations messages.xlf (German)
[ci skip]
2022-10-13 05:45:07 -07:00
Paperless-ngx Translation Bot [bot]
66d79ccd3f New translations messages.xlf (German)
[ci skip]
2022-10-13 04:41:06 -07:00
Paperless-ngx Translation Bot [bot]
9c1195fc59 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-10-12 14:21:46 -07:00
Trenton H
deaf02780e Updates to the new method to set step outputs 2022-10-12 14:04:54 -07:00
Trenton H
5602031b67 Updates to the Docker login v2 action, adds workflow level concurrency 2022-10-12 14:04:54 -07:00
Paperless-ngx Translation Bot [bot]
4c1bf240d6 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-10-12 12:56:10 -07:00
shamoon
b13ced93ed Merge pull request #1745 from paperless-ngx/fix/1743
Bugfix: Fallback to pdf2image if pikepdf fails
2022-10-12 07:38:43 -07:00
shamoon
87472b31d2 Merge pull request #1780 from paperless-ngx/fix/issue-1647
Documentation: Add note re MS exchange servers
2022-10-11 19:59:46 -07:00
shamoon
7f1d01e443 Merge pull request #1777 from paperless-ngx/fix/issue-1776
Fix: creating new storage path on document edit fails to update menu
2022-10-11 19:59:02 -07:00
Michael Shamoon
1024d7e6e2 Add note re MS exchange servers 2022-10-11 15:12:22 -07:00
Trenton Holmes
4cc2976614 Adds specific handling for CCITT Group 4, which pikepdf decodes, but not correctly 2022-10-11 13:51:14 -07:00
Trenton H
caf4b54bc7 In case pikepdf fails to convert an image to a PIL image, fall back to converting pages to PIL images 2022-10-11 13:51:13 -07:00
shamoon
fb2efe5ab8 Merge pull request #1773 from paperless-ngx/library-updates-fixes
Chore: Python library update + test fixes
2022-10-11 13:36:54 -07:00
Michael Shamoon
98f1722d1b Fix slim sidebar close button position
[ci skip]
2022-10-11 12:34:15 -07:00
Michael Shamoon
a6dc8a373e Fix new storagepaths not showing in doc detail 2022-10-11 12:23:15 -07:00
Trenton H
91e96bc88f Bumps tj-actions/changed-files which should resolve the CI warning about Node 12 2022-10-10 14:45:46 -07:00
Trenton H
8c06858807 Updates workflow to clone all history so changed-files can work (probably) 2022-10-10 14:30:55 -07:00
Trenton H
8025df5fe3 Catch the new error raised by redis when it can't find the broker and stub out the call for testing 2022-10-10 14:21:42 -07:00
Trenton H
5aeb656a48 Fixes usage of a depracated logger method 2022-10-10 14:20:19 -07:00
Trenton H
f96ee4f7a0 Updates the pre-commit hooks to ensure alignment with Pipfile 2022-10-10 14:20:19 -07:00
Trenton H
fcdb1dc30c Adds hiredis extra to redis-py and updates everything 2022-10-10 14:16:14 -07:00
Trenton H
dafefa33d6 Adds step to bare metal setup regarding downloading the required NLTK data 2022-10-10 08:58:23 -07:00
Trenton H
d08eb0c66b Adds skipping of NLTK data download if the feature appears disabled 2022-10-10 08:58:23 -07:00
Trenton H
d1a17480ea Account for plusses in the OCR language setting 2022-10-10 08:58:23 -07:00
Trenton H
1e891414a3 Allows disabling NLTK, adds it as a consideration for low power devices 2022-10-10 08:58:23 -07:00
Trenton Holmes
c44c914d3d Changes the NLTK language to be based on the Tesseract OCR language, with fallback to the default processing 2022-10-10 08:58:23 -07:00
Trenton H
d10d2f5a54 Allows configuration of the NLTK processing language 2022-10-10 08:58:23 -07:00
Trenton Holmes
6523cf0c4b Fixes the download and usage of the downloaded data 2022-10-10 08:58:23 -07:00
Trenton Holmes
1262c121f0 Missed one mock 2022-10-10 08:58:23 -07:00
Trenton Holmes
f7cd6974c5 Mock out the nltk portions so the data doesn't need to be downloaded 2022-10-10 08:58:23 -07:00
Trenton Holmes
a7e1ba82d6 Fixes CI unit testing 2022-10-10 08:58:23 -07:00
Trenton Holmes
d856e48045 Updates the pre-processing of document content to be much more robust, with tokenization, stemming and stop word removal 2022-10-10 08:58:23 -07:00
Paperless-ngx Translation Bot [bot]
87972ee7fe New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]
2022-10-10 00:36:14 -07:00
Paperless-ngx Translation Bot [bot]
e6332944ce New translations messages.xlf (Romanian)
[ci skip]
2022-10-10 00:36:13 -07:00
Paperless-ngx Translation Bot [bot]
96d7dc273e New translations messages.xlf (French)
[ci skip]
2022-10-10 00:36:12 -07:00
Paperless-ngx Translation Bot [bot]
4f4a08ccc7 New translations messages.xlf (Spanish)
[ci skip]
2022-10-10 00:36:10 -07:00
Paperless-ngx Translation Bot [bot]
1716a11f45 New translations messages.xlf (Belarusian)
[ci skip]
2022-10-10 00:36:09 -07:00
Paperless-ngx Translation Bot [bot]
9ed0d5f7d6 New translations messages.xlf (Czech)
[ci skip]
2022-10-10 00:36:08 -07:00
Paperless-ngx Translation Bot [bot]
9b461990b7 New translations messages.xlf (Danish)
[ci skip]
2022-10-10 00:36:06 -07:00
Paperless-ngx Translation Bot [bot]
8a47e5b8e4 New translations messages.xlf (Finnish)
[ci skip]
2022-10-10 00:36:05 -07:00
Paperless-ngx Translation Bot [bot]
5f12087779 New translations messages.xlf (Hebrew)
[ci skip]
2022-10-10 00:36:04 -07:00
Paperless-ngx Translation Bot [bot]
8aa9a4db65 New translations messages.xlf (Italian)
[ci skip]
2022-10-10 00:36:02 -07:00
Paperless-ngx Translation Bot [bot]
75a54fab2c New translations messages.xlf (Japanese)
[ci skip]
2022-10-10 00:36:01 -07:00
Paperless-ngx Translation Bot [bot]
085b5eb9f1 New translations messages.xlf (German)
[ci skip]
2022-10-10 00:35:59 -07:00
Paperless-ngx Translation Bot [bot]
543e221d3e New translations messages.xlf (Dutch)
[ci skip]
2022-10-10 00:35:58 -07:00
Paperless-ngx Translation Bot [bot]
e25584a202 New translations messages.xlf (Polish)
[ci skip]
2022-10-10 00:35:55 -07:00
Paperless-ngx Translation Bot [bot]
4c268d5883 New translations messages.xlf (Portuguese)
[ci skip]
2022-10-10 00:35:54 -07:00
Paperless-ngx Translation Bot [bot]
bf8fc3ca29 New translations messages.xlf (Slovenian)
[ci skip]
2022-10-10 00:35:53 -07:00
Paperless-ngx Translation Bot [bot]
65c1b84508 New translations messages.xlf (Swedish)
[ci skip]
2022-10-10 00:35:51 -07:00
Paperless-ngx Translation Bot [bot]
f78ade5007 New translations messages.xlf (Turkish)
[ci skip]
2022-10-10 00:35:50 -07:00
Paperless-ngx Translation Bot [bot]
6f73aef262 New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-10-10 00:35:49 -07:00
Paperless-ngx Translation Bot [bot]
4d715ddfbc New translations messages.xlf (Portuguese, Brazilian)
[ci skip]
2022-10-10 00:35:48 -07:00
Paperless-ngx Translation Bot [bot]
cdf99166f4 New translations messages.xlf (Croatian)
[ci skip]
2022-10-10 00:35:46 -07:00
Paperless-ngx Translation Bot [bot]
fc267472b3 New translations messages.xlf (Luxembourgish)
[ci skip]
2022-10-10 00:35:45 -07:00
Paperless-ngx Translation Bot [bot]
a0fde023f5 New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-10-10 00:35:44 -07:00
Paperless-ngx Translation Bot [bot]
4a98156731 New translations messages.xlf (Norwegian)
[ci skip]
2022-10-10 00:35:43 -07:00
Paperless-ngx Translation Bot [bot]
ecb190d1b8 New translations messages.xlf (Russian)
[ci skip]
2022-10-10 00:35:41 -07:00
Michael Shamoon
14d82bd8ff Update frontend translation strings 2022-10-10 00:19:01 -07:00
shamoon
6f50285f47 Merge pull request #1648 from paperless-ngx/feature-use-celery
Feature: Transition to celery for background tasks
2022-10-10 00:07:55 -07:00
Michael Shamoon
836ab7a9e7 prevent duplicate tourAnchor race condition 2022-10-10 00:07:38 -07:00
Michael Shamoon
06d9e38457 Fix tour / slim sidebar compatibility 2022-10-09 23:58:41 -07:00
shamoon
9aa7e8e37e Merge pull request #1768 from paperless-ngx/chore-update-gotenbreg
Chore: Updates Gotenberg versions
2022-10-09 23:51:04 -07:00
shamoon
fa526dd702 Merge pull request #1644 from paperless-ngx/feature/welcome-tour
Feature: UI Welcome Tour
2022-10-09 23:50:39 -07:00
Michael Shamoon
8325dc5977 Slim sidebar compatibility 2022-10-09 23:48:22 -07:00
Michael Shamoon
abd34d8d17 Fix code style 2022-10-09 23:47:45 -07:00
Michael Shamoon
d19b598371 Add highlighting, move some anchors for visibility 2022-10-09 23:47:45 -07:00
Michael Shamoon
833a301948 Update translation strings for welcome tour 2022-10-09 23:47:45 -07:00
Michael Shamoon
0e03633ed0 fix tour placement issues, basic offerTour method 2022-10-09 23:47:45 -07:00
Michael Shamoon
5e45b1f230 Add admin tour step, remove step titles, cleaner look 2022-10-09 23:47:45 -07:00
Michael Shamoon
07e2329068 Complete welcome tour 2022-10-09 23:47:31 -07:00
Michael Shamoon
4e56fe339e Core welcome tour functionality 2022-10-09 23:46:26 -07:00
shamoon
e7ebc33090 Merge pull request #1641 from paperless-ngx/feature/slim-sidebar
Feature: slim sidebar
2022-10-09 23:24:57 -07:00
Michael Shamoon
3b07e0fe15 Fix merge conflict 2022-10-09 23:24:36 -07:00
Michael Shamoon
a246b3b598 Merge branch 'dev' into feature/slim-sidebar 2022-10-09 23:15:48 -07:00
Trenton Holmes
11ab469a39 Updates a few more instances of the container 2022-10-09 18:03:29 -07:00
Trenton Holmes
694ad53ef9 Updates Gotenberg container to the latest 2022-10-09 17:55:09 -07:00
Trenton Holmes
a3be3bb71a Re-lock pipenv version to the last working version 2022-10-09 17:43:58 -07:00
Trenton Holmes
77b3aa5011 Fixes is_relative_to not being availible for 3.8 2022-10-09 17:43:58 -07:00
Trenton Holmes
9aefff38e7 If the original file containing a barcode was in the temporary scratch dir, move the split files to consume dir 2022-10-09 17:43:58 -07:00
shamoon
462b243531 Merge pull request #1754 from NiFNi/feature/change-default-matching-algo
change default matching algo to auto and move to constant
2022-10-08 09:35:30 -07:00
shamoon
430c5c3b87 Merge pull request #1761 from paperless-ngx/docs/lsio-tweak
Documentation: Tweak LinuxServer
2022-10-07 23:45:51 -07:00
Trenton H
97ceb1a8a6 Enable some testing against a real email server to hopefully catch things earlier 2022-10-07 18:28:11 -07:00
Trenton H
55089aab32 Fixes handling of gmail label extension to IMAP 2022-10-07 18:28:11 -07:00
Trenton Holmes
b7c335507f Fixes the LSIO migration setting for the media root 2022-10-07 18:18:47 -07:00
Trenton Holmes
9c0c734b34 Enables some basic live testing against a tika server with actual sample documents to catch some more errors mocking won't catch 2022-10-07 18:06:06 -07:00
Michael Shamoon
7f5a3ca1a3 Fix code style 2022-10-07 06:29:31 -07:00
shamoon
0b5c6d3532 Merge pull request #1731 from paperless-ngx/fix/1624
Documentation: Adds troubleshooting note about Kubernetes and ports
2022-10-06 13:22:58 -07:00
shamoon
5357775d42 Merge pull request #1692 from paperless-ngx/feature-frontend-update-checking
Feature: frontend update checking settings
2022-10-05 13:46:32 -07:00
Trenton H
0f25260163 Updates to qpdf 11.1.1, pikepdf 6.1.0, and a few other updates 2022-10-05 10:03:40 -07:00
shamoon
964cfcd4fb Merge pull request #1744 from paperless-ngx/fix/issue-1725
Fix: allow preview for .csv files
2022-10-04 13:16:18 -07:00
Michael Shamoon
c42388f7e2 Use text mime type for csv files for browser preview
Co-Authored-By: Trenton H <797416+stumpylog@users.noreply.github.com>
Co-Authored-By: bin101 <12427722+bin101@users.noreply.github.com>
2022-10-04 13:01:06 -07:00
Trenton H
ff7d4d15cd Fixes migration error if some tasks are defined already 2022-10-04 07:56:40 -07:00
shamoon
5e4a9311ed Merge branch 'dev' into feature-use-celery 2022-10-03 18:00:54 -07:00
shamoon
4e07280102 Merge pull request #1642 from paperless-ngx/feature-qpdf-11
Feature: Upgrade to qpdf 11, pikepdf 6 & ocrmypdf 14
2022-10-03 17:36:30 -07:00
shamoon
fdac108cab Merge pull request #1733 from paperless-ngx/docs-lsio-migrate
Documentation: LinuxServer.io Migration
2022-10-03 17:07:06 -07:00
dependabot[bot]
318f74b34a Bump myst-parser from 0.18.0 to 0.18.1
Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 0.18.0 to 0.18.1.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v0.18.0...v0.18.1)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 15:51:43 -07:00
Trenton H
788b3a5ba8 Fixes django-q still in the Pipfile.lock 2022-10-03 13:35:01 -07:00
Trenton H
19d4b85961 Fixes up some issues with the migrations and type mismatches 2022-10-03 13:18:25 -07:00
Trenton H
821c14fbce Corrects how the link to example compose files looks 2022-10-03 11:14:18 -07:00
Trenton H
8c03d9c638 Corrects a re-numbered step 2022-10-03 11:11:51 -07:00
Trenton H
174a609449 Adds a few steps for migration from the LinuxServer.io image 2022-10-03 10:16:53 -07:00
Trenton H
5fd394726e Adds troubleshooting note for Kubernetes about needing to set the port again 2022-10-03 09:01:07 -07:00
Michael Shamoon
1f27f7c12d Update paperless-document.ts 2022-10-03 00:27:57 -07:00
Jens van Almsick
ad6ef7314b fix: csv recognition by consumer
paperless-ngx detects the file format via the mime-type based on the response of python-magic which rely on the response of the file command.
In version 5.39 (which is shipped with debian bullseye and I think many more non-rolling distributions) of the file command a *.csv will be detected as "application/csv" instead of "text/csv" as in newer versions.
2022-10-02 16:09:07 -07:00
Paperless-ngx Translation Bot [bot]
98c306a315 New translations messages.xlf (German)
[ci skip]
2022-10-02 13:21:13 -07:00
Michael Shamoon
11ad8ada79 add id to document duplicate error message 2022-10-02 10:27:45 -07:00
Trenton Holmes
905b28c1d7 When a document is a duplicate, include the title of the existing document in the fail message 2022-10-02 10:27:45 -07:00
dependabot[bot]
84b01b2e4e Bump leonsteinhaeuser/project-beta-automations from 1.3.0 to 2.0.1
Bumps [leonsteinhaeuser/project-beta-automations](https://github.com/leonsteinhaeuser/project-beta-automations) from 1.3.0 to 2.0.1.
- [Release notes](https://github.com/leonsteinhaeuser/project-beta-automations/releases)
- [Commits](https://github.com/leonsteinhaeuser/project-beta-automations/compare/v1.3.0...v2.0.1)

---
updated-dependencies:
- dependency-name: leonsteinhaeuser/project-beta-automations
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 10:27:02 -07:00
dependabot[bot]
5e9928e58b Bump tj-actions/changed-files from 29.0.2 to 31.0.2
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.2 to 31.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v29.0.2...v31.0.2)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 10:26:39 -07:00
dependabot[bot]
0457259e7e Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 10:26:21 -07:00
dependabot[bot]
1f73a6913f Bump actions/setup-python from 3 to 4
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 10:25:49 -07:00
dependabot[bot]
b29593bad9 Merge pull request #1720 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/rxjs-7.5.7 2022-10-02 07:05:45 +00:00
dependabot[bot]
bd378f79f4 Bump rxjs from 7.5.6 to 7.5.7 in /src-ui
Bumps [rxjs](https://github.com/reactivex/rxjs) from 7.5.6 to 7.5.7.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/7.5.6...7.5.7)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 06:52:18 +00:00
shamoon
699ed62af4 Merge pull request #1716 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/uuid-9.0.0
Bump uuid from 8.3.2 to 9.0.0 in /src-ui
2022-10-01 23:51:18 -07:00
dependabot[bot]
d6ae4102b4 Bump uuid from 8.3.2 to 9.0.0 in /src-ui
Bumps [uuid](https://github.com/uuidjs/uuid) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v8.3.2...v9.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 06:49:30 +00:00
shamoon
97eed9c66d Merge pull request #1717 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ng2-pdf-viewer-9.1.2
Bump ng2-pdf-viewer from 9.1.0 to 9.1.2 in /src-ui
2022-10-01 23:47:35 -07:00
dependabot[bot]
b79a560816 Bump ng2-pdf-viewer from 9.1.0 to 9.1.2 in /src-ui
Bumps [ng2-pdf-viewer](https://github.com/VadimDez/ng2-pdf-viewer) from 9.1.0 to 9.1.2.
- [Release notes](https://github.com/VadimDez/ng2-pdf-viewer/releases)
- [Changelog](https://github.com/VadimDez/ng2-pdf-viewer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/VadimDez/ng2-pdf-viewer/compare/9.1.0...9.1.2)

---
updated-dependencies:
- dependency-name: ng2-pdf-viewer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 06:25:59 +00:00
shamoon
a6045bb8e8 Merge pull request #1715 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-color-8.0.3
Bump ngx-color from 8.0.2 to 8.0.3 in /src-ui
2022-10-01 23:25:00 -07:00
shamoon
9f770e42ba Merge pull request #1719 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/concurrently-7.4.0
Bump concurrently from 7.3.0 to 7.4.0 in /src-ui
2022-10-01 20:03:53 -07:00
dependabot[bot]
b20fe9f09b Bump concurrently from 7.3.0 to 7.4.0 in /src-ui
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 02:41:50 +00:00
dependabot[bot]
48dbdc6c00 Merge pull request #1718 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/node-18.7.23 2022-10-02 02:40:34 +00:00
dependabot[bot]
d33f993809 Bump @types/node from 18.7.14 to 18.7.23 in /src-ui
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.14 to 18.7.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 02:22:40 +00:00
dependabot[bot]
8ba44b3f71 Bump ngx-color from 8.0.2 to 8.0.3 in /src-ui
Bumps [ngx-color](https://github.com/scttcper/ngx-color) from 8.0.2 to 8.0.3.
- [Release notes](https://github.com/scttcper/ngx-color/releases)
- [Commits](https://github.com/scttcper/ngx-color/compare/v8.0.2...v8.0.3)

---
updated-dependencies:
- dependency-name: ngx-color
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 02:22:20 +00:00
shamoon
83e0a6e179 Merge pull request #1714 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-environment-jsdom-29.1.2
Bump jest-environment-jsdom from 29.0.1 to 29.1.2 in /src-ui
2022-10-01 19:20:36 -07:00
dependabot[bot]
8e2c4da55e Bump jest-environment-jsdom from 29.0.1 to 29.1.2 in /src-ui
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.0.1 to 29.1.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 01:09:49 +00:00
dependabot[bot]
cae79e0555 Merge pull request #1708 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/compiler-14.2.4 2022-10-02 00:51:27 +00:00
Michael Shamoon
5b79aec065 Update @angular/cli @angular/core 2022-10-01 17:36:08 -07:00
dependabot[bot]
91de061c06 Bump @angular/compiler from 14.2.0 to 14.2.4 in /src-ui
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 14.2.0 to 14.2.4.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/14.2.4/packages/compiler)

---
updated-dependencies:
- dependency-name: "@angular/compiler"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 17:35:34 -07:00
shamoon
f7d6f0bf21 Merge pull request #1707 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-10.9.0
Bump cypress from 10.7.0 to 10.9.0 in /src-ui
2022-10-01 17:28:55 -07:00
dependabot[bot]
551c765358 Bump cypress from 10.7.0 to 10.9.0 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.7.0 to 10.9.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.7.0...v10.9.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 00:10:16 +00:00
shamoon
34ee26084d Merge pull request #1710 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/bootstrap-5.2.1
Bump bootstrap from 5.2.0 to 5.2.1 in /src-ui
2022-10-01 17:09:22 -07:00
dependabot[bot]
47a76412e2 Bump bootstrap from 5.2.0 to 5.2.1 in /src-ui
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 00:03:12 +00:00
shamoon
45e6a419b3 Merge pull request #1706 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/typescript-4.8.4
Bump typescript from 4.7.4 to 4.8.4 in /src-ui
2022-10-01 16:11:17 -07:00
dependabot[bot]
c34f982496 Bump typescript from 4.7.4 to 4.8.4 in /src-ui
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.7.4 to 4.8.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.7.4...v4.8.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 20:07:21 +00:00
Michael Shamoon
f26fda9485 Fix python + frontend tests 2022-09-30 18:32:21 -07:00
Michael Shamoon
06a29cd45c Handle settings live refresh, unsubscribe subscriptions 2022-09-30 15:39:02 -07:00
Michael Shamoon
98ab770437 Update documentation re. PAPERLESS_ENABLE_UPDATE_CHECK 2022-09-30 15:10:52 -07:00
Michael Shamoon
c87f60c605 Better migration of update checking settings, offer reload, strip backend_setting from db 2022-09-30 14:03:59 -07:00
Michael Shamoon
9e2430da46 Frontend update checking settings 2022-09-30 12:30:23 -07:00
Paperless-ngx Translation Bot [bot]
f59abadbc4 New translations messages.xlf (Russian)
[ci skip]
2022-09-30 10:20:29 -07:00
Paperless-ngx Translation Bot [bot]
4a3a55b923 New translations messages.xlf (Russian)
[ci skip]
2022-09-30 07:56:26 -07:00
Paperless-ngx Translation Bot [bot]
9bd031fbd7 New translations messages.xlf (Russian)
[ci skip]
2022-09-30 06:55:45 -07:00
Trenton H
436f9e891e Changes MariaDB encoding to use utf8mb4 2022-09-29 13:53:44 -07:00
Michael Shamoon
04faa10e3b Update references to qcluster t celery 2022-09-28 20:13:19 -07:00
Trenton Holmes
38ba1d1a52 Cleans up and documnets installation on bare metal, includes systemd service file for the celery and celery beat 2022-09-28 19:38:41 -07:00
Trenton H
4422bb3f69 Fix logger location tag
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-09-28 11:02:34 -07:00
Trenton H
5b66ef0a74 Updates how task_args and task_kwargs are parsed, adds testing to cover everything I can think of 2022-09-28 10:40:55 -07:00
shamoon
5639659b63 Merge pull request #1683 from paperless-ngx/fix/issue-1660
Mariadb compose files should use `PAPERLESS_DBPASS`
2022-09-28 09:48:20 -07:00
Michael Shamoon
7ba9cdbe23 Mariadb compose files should use PAPERLESS_DBPASS 2022-09-28 09:38:13 -07:00
Michael Shamoon
6f6f006704 re-enable frontend tests and fix tasks fixture 2022-09-27 21:01:16 -07:00
Michael Shamoon
4fe37f6aee Add related_document and direct link from task UI 2022-09-27 20:50:26 -07:00
Michael Shamoon
5162bdd404 Filter out old migrated tasks 2022-09-27 19:41:23 -07:00
Michael Shamoon
c8f252d165 Add document name & error result parsing to PaperlessTask serializer 2022-09-27 19:40:24 -07:00
Michael Shamoon
c289439cab Fix tab ids & date parsing 2022-09-27 17:56:04 -07:00
shamoon
807b7130e5 Merge pull request #1671 from paperless-ngx/v1.9.2-changelog
[Documentation] Add v1.9.2 changelog
2022-09-27 16:50:23 -07:00
Trenton H
14b6216b49 Ensures all existing one to one fields are nulled before altering the field 2022-09-27 14:17:42 -07:00
Trenton H
9188e25dc5 Fixes migration order back to the right way 2022-09-27 13:55:31 -07:00
Trenton H
fad1b03458 Finalizes what the PaperlessTask will look like to the frontend 2022-09-27 12:44:01 -07:00
Michael Shamoon
49054c61a4 Add failed tasks badge, better animation 2022-09-27 11:00:02 -07:00
Michael Shamoon
e2d593c023 Fix formatting, add note about 1.9.1 version string 2022-09-27 10:04:41 -07:00
github-actions
7455963124 Changelog - GHA 2022-09-27 17:01:37 +00:00
Michael Shamoon
6771e57fca Merge branch 'main' into dev 2022-09-27 09:36:39 -07:00
Michael Shamoon
9d117ee11b Merge pull request #1666 from paperless-ngx/fix/1664 2022-09-27 09:34:34 -07:00
shamoon
7d4b2c2413 Merge pull request #1670 from paperless-ngx/fix/issue-1667
Bugfix: Allow PAPERLESS_OCR_CLEAN=none
2022-09-27 09:29:49 -07:00
Michael Shamoon
5bb1824613 Allow PAPERLESS_OCR_CLEAN=none 2022-09-27 08:48:04 -07:00
Trenton H
8c07b76e6a Bumps version numbers to 1.9.2 2022-09-27 08:06:35 -07:00
shamoon
8cb58b4ff8 Merge pull request #1650 from paperless-ngx/fix/changelog-formatting
Chore: Ensure the generated changelog is formatted
2022-09-26 16:02:47 -07:00
shamoon
426178b6e5 Merge pull request #1649 from paperless-ngx/v1.9.1-changelog 2022-09-26 13:03:29 -07:00
Trenton H
07ec74a5d6 Runs the pre-commit hooks against the changelog before committing it 2022-09-26 12:12:57 -07:00
Trenton H
a865f2af7d Fixes changelog linting 2022-09-26 12:06:42 -07:00
github-actions
3409d19139 Changelog - GHA 2022-09-26 19:04:29 +00:00
Trenton H
71b4571524 Merge branch 'main' into dev 2022-09-26 11:31:18 -07:00
Trenton Holmes
9247300230 Transitions the backend to celery and celery beat 2022-09-26 11:25:34 -07:00
Trenton H
8967f07c8d Fixes a missing option for OCR mode and incorrect clean mode 2022-09-26 11:05:19 -07:00
shamoon
6e21d3dbee Merge pull request #1646 from paperless-ngx/fix/reset-button-padding
Fix reset button padding on small screens
2022-09-26 11:03:52 -07:00
Michael Shamoon
45b3422506 Fix reset button padding on small screens 2022-09-26 10:55:22 -07:00
Trenton H
e5de658e78 Updates to qpdf 11.1, pikepdf 6 and OCRMyPDF 14 2022-09-26 09:49:03 -07:00
Michael Shamoon
e0f93c26d6 Nicer slim sidebar transitioning, dark mode fixes, fix tests by making settings taller 2022-09-26 09:33:05 -07:00
Trenton H
df7e4d85c6 Fixes the linting issue 2022-09-26 09:15:22 -07:00
janis-ax
ae736f8f68 Update docs/advanced_usage.rst
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-09-26 09:06:36 -07:00
janis-ax
e2674c29a6 Improve docs with exampe
Filename ending comes automatically
2022-09-26 09:06:36 -07:00
Michael Shamoon
aa55162e2e Settings UI with live updating 2022-09-26 09:05:53 -07:00
Michael Shamoon
1330390b4f slim sidebar with doc list adjusting 2022-09-26 09:05:53 -07:00
Michael Shamoon
617055fca7 Save slimsidebar settings to db on change 2022-09-26 09:05:53 -07:00
shamoon
185b352264 Merge pull request #1640 from paperless-ngx/feature-combo-deps-update
Chore: Python dependencies update
2022-09-26 09:04:45 -07:00
shamoon
58afac2312 Merge pull request #1639 from paperless-ngx/v1.9.0-changelog
[Documentation] Add v1.9.0 changelog
2022-09-26 08:49:43 -07:00
Trenton H
ea60b83336 Fixes missing markdown text from a PR title 2022-09-26 08:44:42 -07:00
Trenton Holmes
05a00b3057 Updates Python deps all at once 2022-09-26 08:26:55 -07:00
github-actions
09139fe434 Changelog - GHA 2022-09-26 15:24:50 +00:00
Michael Shamoon
d003d26a67 Update environment.prod.ts 2022-09-26 07:56:05 -07:00
Michael Shamoon
ef2789cf57 Merge branch 'main' into dev 2022-09-26 07:55:49 -07:00
Michael Shamoon
7d4ce40a37 v1.9.0 2022-09-26 07:54:10 -07:00
shamoon
8feada6907 Merge pull request #1560 from paperless-ngx/beta
[Beta] Paperless-ngx v1.9.0 Release Candidate
2022-09-26 07:53:16 -07:00
Paperless-ngx Translation Bot [bot]
ed9b0c32d8 New Crowdin updates (#1633)
* bugfix: increase delay

partially reverts 86358d5561
re-implements 4fbabe43ea

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
Co-authored-by: Florian Brandes <florian.brandes@posteo.de>
2022-09-26 07:52:44 -07:00
Felix E
8088394d16 Merge pull request #1629 from paperless-ngx/feature-better-pipenv-docker
Chore: Moves pipenv into its own Docker stage
2022-09-25 09:54:40 +02:00
Trenton Holmes
cb2823ff45 Moves the pipenv generation of requirements.txt into a seperate build stage, disconnecting the main image from its dependencies 2022-09-21 09:43:40 -07:00
lemmi
27906df149 paperless_cmd.sh: use exec to run supervisord
Without exec, signals aren't passed through properly. Stopping the
container won't have any effect unless killed.

closes #1616
2022-09-20 07:23:04 -07:00
Paperless-ngx Translation Bot [bot]
b8e7f0b45f New Crowdin updates (#1607)
* bugfix: increase delay

partially reverts 86358d5561
re-implements 4fbabe43ea

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>

* New translations messages.xlf (Finnish) [ci skip]

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
Co-authored-by: Florian Brandes <florian.brandes@posteo.de>
2022-09-16 15:45:17 -07:00
Trenton H
355b3fcb3d Fixes grammar in comment
Co-authored-by: Florian <florian.brandes@posteo.de>
2022-09-16 09:08:16 -07:00
Trenton Holmes
7aa0e5650b Updates how barcodes are detected, using pikepdf images, instead of converting each page to an image 2022-09-16 09:08:16 -07:00
Paperless-ngx Translation Bot [bot]
f9a0adc64e New Crowdin updates (#1580)
* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]
2022-09-16 08:37:07 -07:00
shamoon
3b34aed64f Merge pull request #1605 from paperless-ngx/fix/1599-consume-permissions
Fix: Consume directory permissions were not updated
2022-09-16 08:31:41 -07:00
Florian Brandes
8a8edfb108 bugfix: increase delay
partially reverts 86358d5561
re-implements 4fbabe43ea

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-09-16 08:00:26 -07:00
Trenton H
3a7cbd3a42 Fixes an issue where the consume directory wasn't included in the permissions fix at Docker entry 2022-09-16 07:52:33 -07:00
Trenton H
0e443ba017 Merge pull request #1596 from paperless-ngx/fix/1590-barcodes
Fix: Double barcode separation creates empty file
2022-09-15 14:18:01 -07:00
shamoon
8ed401aec1 Merge pull request #1591 from paperless-ngx/fix/1583-tika-str
Fix: Parsing Tika documents fails with AttributeError
2022-09-14 21:52:49 -07:00
Trenton Holmes
9ae847039b Fixes the seperation of files by barcode, during the case where 2 barcodes appear back to back 2022-09-14 14:00:37 -07:00
Trenton Holmes
d4cb84ff76 Ensure the tika parse function gets a string, not a PathLike 2022-09-14 07:48:12 -07:00
shamoon
17ae2aacbf Merge pull request #1576 from paperless-ngx/fix/slow-classifier
Fix: Resolve issue with slow classifier
2022-09-13 11:57:58 -07:00
Michael Shamoon
82d03f2dc6 fix tag list vertical space 2022-09-13 11:54:25 -07:00
Trenton Holmes
3cf2aaf8ff Locks numpy version until an upstream fix or resolution to aarch64 classifier slowdown 2022-09-13 10:33:07 -07:00
shamoon
0c89721133 Merge pull request #1567 from paperless-ngx/feature-process-names
Feature: Display django-q process names
2022-09-12 12:21:49 -07:00
Trenton H
e206687070 Updates django-q and add optional setproctitle to allow display 2022-09-12 12:18:41 -07:00
Trenton Holmes
cdb9c48545 Minor logging updates 2022-09-12 11:44:33 -07:00
Trenton Holmes
0b8eff9643 Extends the cleanup of image versions to the library images and all the registry cache images as well 2022-09-12 11:44:33 -07:00
shamoon
16882b8fa9 Merge pull request #1566 from paperless-ngx/fix/issue-1564
Fix document comments not updating on document navigation
2022-09-12 11:37:30 -07:00
Michael Shamoon
2afa5940e3 Fix live updating of comments on doc change 2022-09-12 08:35:13 -07:00
Michael Shamoon
8fa7bc3dab Remove user dropdown border 2022-09-12 08:35:04 -07:00
Michael Shamoon
4a9dc1e33a Update messages.xlf 2022-09-11 20:47:47 -07:00
Trenton Holmes
b0d842a370 Updates version string to 1.9.0-rc1
Signed-off-by: Trenton Holmes <holmes.trenton@gmail.com>
2022-09-11 15:34:10 -07:00
Trenton Holmes
194dda6d84 Merge branch 'main' into beta 2022-09-11 15:12:54 -07:00
Paperless-ngx Translation Bot [bot]
3267708097 New Crowdin updates (#1295)
Squashed commit of Crowdin updates

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-09-11 15:04:55 -07:00
shamoon
71a808c95a Merge pull request #543 from bckelly1/feature-mariadb-support
Feature: Add MariaDB support
2022-09-11 08:50:27 -07:00
Trenton Holmes
2c3c26edf1 Ensures the Pipfile.lock hash is up to date 2022-09-11 08:20:58 -07:00
Trenton Holmes
18a4ba7778 Removes optipng, added in a bad merge 2022-09-11 07:42:20 -07:00
Trenton Holmes
140e239bdb Fixes the shellcheck issues 2022-09-11 07:42:20 -07:00
Trenton Holmes
537e7c63f4 Combines the two database folders to a single variable during installation 2022-09-11 07:42:20 -07:00
Trenton Holmes
ed2e884de8 Fully qualifies the image and updates to Redis 7 2022-09-11 07:42:20 -07:00
Trenton Holmes
60980cb26a Adds the mysql Python dependency 2022-09-11 07:42:19 -07:00
Brian Kelly
3b84e34c8e re-order apt dependencies 2022-09-11 07:40:32 -07:00
Brian Kelly
ebdf9b55df correct the mariadb volume data path 2022-09-11 07:40:32 -07:00
Brian Kelly
f528b01de4 set paperless db user 2022-09-11 07:40:32 -07:00
Brian Kelly
6ae9a8f2be remove debug image reference 2022-09-11 07:40:32 -07:00
Brian Kelly
65cfd55027 rebase mariadb feature onto dev 2022-09-11 07:40:31 -07:00
Michael Shamoon
15d074d39c Include storage path in exporter + tests 2022-09-11 07:39:35 -07:00
shamoon
962d0ebb40 Merge pull request #1551 from paperless-ngx/chore-settings-cleanup
Chore: Cleanup and validate settings
2022-09-10 20:04:35 -07:00
Trenton Holmes
d408900a91 Adds validation and testing to cover some of the common settings 2022-09-09 11:48:57 -07:00
Trenton Holmes
0bf9e55ca7 Fixes a minor TODO in settings, and enables flake8 for settings.py 2022-09-09 11:42:50 -07:00
dependabot[bot]
55d36b39b1 Bump pikepdf from 5.5.0 to 5.6.1
Bumps [pikepdf](https://github.com/pikepdf/pikepdf) from 5.5.0 to 5.6.1.
- [Release notes](https://github.com/pikepdf/pikepdf/releases)
- [Commits](https://github.com/pikepdf/pikepdf/compare/v5.5.0...v5.6.1)

---
updated-dependencies:
- dependency-name: pikepdf
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-08 07:51:11 -07:00
Trenton Holmes
45fd01a688 Decrease the final size of the images containing .deb and .whl files 2022-09-08 07:31:00 -07:00
dependabot[bot]
1fda0782ae Bump black from 22.6.0 to 22.8.0
Bumps [black](https://github.com/psf/black) from 22.6.0 to 22.8.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.6.0...22.8.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 09:33:36 -07:00
dependabot[bot]
2680a83455 Bump tqdm from 4.64.0 to 4.64.1
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.64.0 to 4.64.1.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.64.0...v4.64.1)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 09:05:32 -07:00
dependabot[bot]
148e875523 Bump pytest from 7.1.2 to 7.1.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.2 to 7.1.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.2...7.1.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 07:57:41 -07:00
shamoon
b9e60e0145 Merge pull request #1528 from erikarvstedt/docs-fix-variable-defaults
docs/configuration: Fix binary variable defaults
2022-09-06 14:22:23 -07:00
Erik Arvstedt
03559454f6 docs/configuration: Fix binary variable defaults 2022-09-04 15:21:49 +02:00
dependabot[bot]
50ee1c0bd5 Bump tj-actions/changed-files from 24 to 29.0.2
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 24 to 29.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v24...v29.0.2)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-03 18:35:51 -07:00
shamoon
c6b13271cf Merge pull request #1500 from paperless-ngx/feature-gunicorn-tune
Bugfix: Better gunicorn settings for workers
2022-09-02 18:01:47 -07:00
dependabot[bot]
fd83e8f2a9 Merge pull request #1502 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/cli-14.2.1 2022-09-02 08:40:58 +00:00
Michael Shamoon
5f7c724531 update jest-preset-angular 2022-09-02 01:26:05 -07:00
Michael Shamoon
31ebe2675b update angular core 2022-09-02 01:25:39 -07:00
Michael Shamoon
60d40cc2ce update angular cli 2022-09-02 01:24:14 -07:00
dependabot[bot]
6796cdf947 Bump @angular/cli from 14.1.0 to 14.2.1 in /src-ui
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 14.1.0 to 14.2.1.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/14.1.0...14.2.1)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 08:15:36 +00:00
shamoon
6592a925c4 Merge pull request #1507 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-environment-jsdom-29.0.1
Bump jest-environment-jsdom from 28.1.3 to 29.0.1 in /src-ui
2022-09-02 01:03:23 -07:00
dependabot[bot]
6d42b2a29d Bump jest-environment-jsdom from 28.1.3 to 29.0.1 in /src-ui
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.3 to 29.0.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.0.1/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:41:29 +00:00
shamoon
6b4dccfbd5 Merge pull request #1506 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/node-18.7.14
Bump @types/node from 18.6.3 to 18.7.14 in /src-ui
2022-09-02 00:40:15 -07:00
dependabot[bot]
2582d325bc Bump @types/node from 18.6.3 to 18.7.14 in /src-ui
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.3 to 18.7.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:39:49 +00:00
shamoon
078814e77a Merge pull request #1505 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular-builders/jest-14.0.1
Bump @angular-builders/jest from 14.0.0 to 14.0.1 in /src-ui
2022-09-02 00:35:49 -07:00
dependabot[bot]
a80b413d38 Bump @angular-builders/jest from 14.0.0 to 14.0.1 in /src-ui
Bumps [@angular-builders/jest](https://github.com/just-jeb/angular-builders/tree/HEAD/packages/jest) from 14.0.0 to 14.0.1.
- [Release notes](https://github.com/just-jeb/angular-builders/releases)
- [Changelog](https://github.com/just-jeb/angular-builders/blob/master/packages/jest/CHANGELOG.md)
- [Commits](https://github.com/just-jeb/angular-builders/commits/@angular-builders/jest@14.0.1/packages/jest)

---
updated-dependencies:
- dependency-name: "@angular-builders/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:33:26 +00:00
shamoon
8cb93da53e Merge pull request #1504 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/zone.js-0.11.8
Bump zone.js from 0.11.7 to 0.11.8 in /src-ui
2022-09-02 00:32:20 -07:00
dependabot[bot]
299ae2b828 Bump zone.js from 0.11.7 to 0.11.8 in /src-ui
Bumps [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) from 0.11.7 to 0.11.8.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/packages/zone.js/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/zone.js-0.11.8/packages/zone.js)

---
updated-dependencies:
- dependency-name: zone.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:30:09 +00:00
shamoon
96cf316eec Merge pull request #1494 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-color-8.0.2
Bump ngx-color from 8.0.1 to 8.0.2 in /src-ui
2022-09-02 00:17:09 -07:00
dependabot[bot]
4aebb8e153 Bump ngx-color from 8.0.1 to 8.0.2 in /src-ui
Bumps [ngx-color](https://github.com/scttcper/ngx-color) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/scttcper/ngx-color/releases)
- [Commits](https://github.com/scttcper/ngx-color/compare/v8.0.1...v8.0.2)

---
updated-dependencies:
- dependency-name: ngx-color
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:02:45 +00:00
shamoon
82c6942f09 Merge pull request #1496 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-10.7.0
Bump cypress from 10.3.1 to 10.7.0 in /src-ui
2022-09-02 00:01:35 -07:00
dependabot[bot]
ff280f0309 Bump cypress from 10.3.1 to 10.7.0 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.3.1 to 10.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.3.1...v10.7.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 06:53:44 +00:00
shamoon
06d15a11c8 Merge pull request #1495 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress/schematic-2.1.1
Bump @cypress/schematic from 2.0.0 to 2.1.1 in /src-ui
2022-09-01 23:52:39 -07:00
shamoon
4b3649ea94 Merge pull request #1498 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/popperjs/core-2.11.6
Bump @popperjs/core from 2.11.5 to 2.11.6 in /src-ui
2022-09-01 23:41:01 -07:00
Trenton Holmes
5ffb25b71d Tweaks gunicorn to preload the app and use shared memory for temporary fs 2022-09-01 18:04:12 -07:00
dependabot[bot]
8b28159e2d Bump @popperjs/core from 2.11.5 to 2.11.6 in /src-ui
Bumps [@popperjs/core](https://github.com/popperjs/popper-core) from 2.11.5 to 2.11.6.
- [Release notes](https://github.com/popperjs/popper-core/releases)
- [Commits](https://github.com/popperjs/popper-core/compare/v2.11.5...v2.11.6)

---
updated-dependencies:
- dependency-name: "@popperjs/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 20:12:56 +00:00
dependabot[bot]
99d6103617 Bump @cypress/schematic from 2.0.0 to 2.1.1 in /src-ui
Bumps [@cypress/schematic](https://github.com/cypress-io/cypress) from 2.0.0 to 2.1.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/@cypress/schematic-v2.0.0...@cypress/schematic-v2.1.1)

---
updated-dependencies:
- dependency-name: "@cypress/schematic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 20:09:45 +00:00
shamoon
a502fe7c5c Merge pull request #1492 from paperless-ngx/feature-imap-utf-improve
Feature: Simplify IMAP login for UTF-8
2022-09-01 09:35:26 -07:00
Trenton Holmes
bd18a57a5d Updates imap_tools and updates to use the new login method for UTF-8 2022-09-01 08:54:44 -07:00
viktor-c
3828d712bd Info about installing on subpath (#1350)
* Update docker-compose.env

* Update configuration.rst

example.com/paperless is not a subdomain, but a subpath. Also when hosting from a subdomain like paperless.example.com one does not have to change anything in the configuration, it just works, because paperless expects to be hosted at root, i.e. paperless.example.com
This however changes when paperless is not hosted at root anymore but for example at paperless.example.com/paperlessNgx

* Update docker-compose.env

* Apply suggestions from code review

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-08-31 16:36:13 -07:00
Quinn Casey
a6be010464 Merge pull request #1488 from paperless-ngx/fix/tasks-table-actions
Fix actions button in tasks table
2022-08-31 16:18:13 -07:00
Michael Shamoon
efe51b30fe Fix actions button in tasks table 2022-08-31 12:39:56 -07:00
Felix E
26019b9c17 Merge pull request #1482 from paperless-ngx/move-scanners-to-wiki
Docs: move scanner & software recs to GH wiki
2022-08-31 19:28:03 +02:00
Michael Shamoon
ebdd7afb67 Move scanner & software recs to GH wiki 2022-08-30 22:14:07 -07:00
Felix E
0c90b84a92 Merge pull request #1467 from tooomm/patch-1
Docs: Update mobile scanner section
2022-08-28 10:29:15 +02:00
tooomm
9c2265d1aa update mobile scanner section 2022-08-27 18:03:54 +02:00
Quinn Casey
8046a6f3a7 Merge pull request #1463 from paperless-ngx/fix/issue-1462
Fix: Add missing filter rule types to SavedViewFilterRule model & fix migrations
2022-08-26 12:35:29 -07:00
Michael Shamoon
ddff902291 Fix 1023, 1024 migrations, add savedviewfilterrule migration 2022-08-26 10:02:48 -07:00
Michael Shamoon
a406920ae6 Add missing filter rule types to SavedViewFilterRule model
And add note to filter-rule-type.ts
2022-08-26 10:02:48 -07:00
Quinn Casey
44e596b0c4 Merge pull request #1451 from paperless-ngx/feature-better-redo-ocr
Feature: Even better re-do of OCR
2022-08-25 17:01:54 -07:00
shamoon
2b1c8c8d9a Merge pull request #1375 from tim-vogel/add_comments
Feature: document comments
2022-08-25 11:48:31 -07:00
shamoon
d40c13420d Merge pull request #1367 from Eckii24/feat/date-suggestions
Adding date suggestions to the documents details view
2022-08-25 11:47:37 -07:00
Trenton Holmes
8ad2f7daf0 Locks scipy to 1.8.1, allows some other minor version updates 2022-08-25 11:34:00 -07:00
shamoon
696ebf545f Revert "Bump sphinx from 5.0.2 to 5.1.1" 2022-08-25 11:34:00 -07:00
Quinn Casey
ed515f4e36 Merge pull request #1460 from paperless-ngx/fix/paperless-conf-typo
Fix paperless.conf.example typo
2022-08-25 08:39:53 -07:00
Quinn Casey
06a4949266 Fix minor duplicate/incorrect conf key 2022-08-25 08:36:48 -07:00
shamoon
f50a01e118 Merge pull request #1297 from paperless-ngx/dependabot/pip/dev/sphinx-5.1.1
Bump sphinx from 5.0.2 to 5.1.1
2022-08-25 08:33:40 -07:00
shamoon
09512be1ad Merge pull request #1301 from paperless-ngx/fix-release-drafter
[CI] Fix release drafter issues
2022-08-25 08:25:28 -07:00
shamoon
bb951ad860 Merge pull request #1421 from paperless-ngx/feature-consumer-event-driven
Feature: Event driven consumer
2022-08-25 08:16:47 -07:00
Michael Shamoon
858ae909e8 Default PAPERLESS_NUMBER_OF_SUGGESTED_DATES to 3 2022-08-25 08:03:38 -07:00
Quinn Casey
1692bac3fe Merge pull request #1442 from paperless-ngx/fix/skip-archive-still-archiving
Bugfix: Fixes the creation of an archive file, even if noarchive was specified
2022-08-25 06:23:10 -07:00
Michael Shamoon
cce1595c3d Fix CodeQL warnings 2022-08-24 14:24:10 -07:00
Trenton Holmes
67bb140eef Finalizes testing of the delete comment 2022-08-24 14:24:10 -07:00
Trenton Holmes
6d5d308d6c Starts on implementing tests for the new API 2022-08-24 14:24:10 -07:00
Trenton Holmes
d39b4ae8cb Merges the migration branches 2022-08-24 14:24:10 -07:00
Michael Shamoon
0f4b118b61 Basic verification of Comment export & exporter comment tuple fix
From oprhaned commits b1855a4b7a
53f21574fd

Co-Authored-By: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
2022-08-24 14:24:10 -07:00
Michael Shamoon
f5f2240828 Add frontend tests for comments 2022-08-24 14:24:10 -07:00
Mark Stenglein
66593a28f5 docs: scanners: add Brother ads4700w
I've tested Paperless with the ADS-4700W and it works great.

This commit adds the recommendation.
2022-08-24 08:57:45 -07:00
Michael Shamoon
ba1cdd5914 Update messages.xlf 2022-08-23 19:22:30 -07:00
Michael Shamoon
3f536552a6 Move add comment to top of comments list 2022-08-23 19:22:30 -07:00
Michael Shamoon
1d2282df9e Cleanup frontend comment service & other code
[ci skip]
2022-08-23 19:20:08 -07:00
Michael Shamoon
1b56ffd0c0 Rework comment UI
Add error popups, text field validation, move form, move comment header to footer, updated styling
2022-08-23 19:20:08 -07:00
Michael Shamoon
d5018af2a3 python code style 2022-08-23 19:20:08 -07:00
Michael Shamoon
5c1e09cc48 Refactor comment UI code
And run prettier
2022-08-23 19:20:08 -07:00
Michael Shamoon
6d956ac13b fix migration dependency
and run code style
2022-08-23 19:19:21 -07:00
Michael Shamoon
865fbbd15c Missed PAPERLESS_COMMENTS_ENABLED code 2022-08-23 19:19:21 -07:00
shamoon
97cfd0085e Remove faux test file 2022-08-23 19:19:21 -07:00
Michael Shamoon
f20f200c8d Fix comment service method signature
and run prettier over file
2022-08-23 19:19:21 -07:00
Michael Shamoon
78bd424ecb Remove faux testing file 2022-08-23 19:19:21 -07:00
Michael Shamoon
6fa32c36e9 Use frontend settings instead of env variable 2022-08-23 19:19:21 -07:00
tim-vogel
817882ff6f add comment function 2022-08-23 19:19:21 -07:00
tooomm
d1e8299010 typo 2022-08-23 19:18:45 -07:00
dependabot[bot]
42c50c4e0b Bump sphinx from 5.0.2 to 5.1.1
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.0.2 to 5.1.1.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/5.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.0.2...v5.1.1)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 12:37:59 +00:00
shamoon
c151db6e21 Merge pull request #1446 from paperless-ngx/feature-storage-path-rematch
Feature: Adds storage paths to re-tagger command
2022-08-21 20:07:06 -07:00
shamoon
7844537355 Merge pull request #1440 from GwynHannay/feature-orig-filename-metadata
Feature: Preserve original filename in metadata
2022-08-21 20:05:25 -07:00
Quinn Casey
a414208327 Merge pull request #1445 from paperless-ngx/library-deps-update
Chore: Bump Python dependencies
2022-08-21 18:45:58 -07:00
Trenton Holmes
ab761e837c Implements a better re-do of OCR by making the document archiver function common. Actually creates updated file now 2022-08-21 18:20:59 -07:00
Trenton Holmes
c8e838e3a0 Adds the storage paths to the re-tagger command 2022-08-21 18:01:19 -07:00
Trenton Holmes
9b24cf7591 Also provide the original file name to the post consumption script 2022-08-21 16:16:28 -07:00
Trenton Holmes
5e3cdcdd6e Bumps all library versions which are currently working 2022-08-21 08:34:40 -07:00
Michael Shamoon
baeb2a074a Add original filename to frontend doc detail metadata 2022-08-21 08:06:56 -07:00
Zerteax
a56de4547c Changes to Redis documentation (#1441)
* Added more description in PAPERLESS_REDIS

* More Information on Redis

* Update configuration.rst

* Changed <ip> to <host>

Same as in the Documentation of Redis

* Edited the link

Linking directly to the Securing Redis part
2022-08-21 07:27:45 -07:00
Gwyn Hannay
e3cc5c3013 format code 2022-08-20 14:31:30 -07:00
Gwyn Hannay
4194b248b9 create migration for original filename 2022-08-20 14:30:40 -07:00
Gwyn Hannay
3fcbd8f3ac update files and model to include new field 2022-08-20 14:30:14 -07:00
Trenton Holmes
b3b2519bf0 Fixes the creation of an archive file, even if noarchive was specified 2022-08-20 13:47:56 -07:00
Stefan
fccea022fa adapt test to respect gmail_label keyword 2022-08-20 13:15:38 -07:00
Stefan
d80d5e4e70 fix debug output 2022-08-20 13:15:38 -07:00
Stefan
f1e93eb70a Ignore tagged emails from gmail to avoid duplicated documents. 2022-08-20 13:15:38 -07:00
Stefan
260b709296 add test for gmail account tag handling 2022-08-20 13:15:38 -07:00
Stefan
9bb762fc8f fix mail tests 2022-08-20 13:15:38 -07:00
Stefan
5c49bbfc73 fix formatting 2022-08-20 13:15:38 -07:00
Stefan
edabf208bc Handle tags for gmail email accounts
like mentioned here: https://github.com/ikvk/imap_tools/issues/174
2022-08-20 13:15:38 -07:00
Quinn Casey
0878a199f4 Merge pull request #1436 from tribut/redis-image
Update redis image
2022-08-18 08:03:19 -07:00
Felix Eckhofer
eec1f03f86 Use redis image tag :7 2022-08-18 11:47:47 +02:00
Quinn Casey
a4c4b81297 Manually link authors only in docs/changelog.md 2022-08-17 08:30:40 -07:00
Felix E
a5f9c8f651 Merge pull request #1430 from glassbox-sco/patch-1
Update scanners.rst
2022-08-17 08:31:51 +02:00
Quinn Casey
1ec7351842 Minor doc fixes 2022-08-16 19:44:48 -07:00
glassbox-sco
f2cab81aed Update scanners.rst 2022-08-17 00:09:21 +01:00
Dennis Gaida
9cbc74ebb2 remove redis URL from log 2022-08-16 12:41:52 -07:00
Dennis Gaida
3d36d0445c Hide credentials from log 2022-08-16 12:41:52 -07:00
Dennis Gaida
f4fece5550 PAPERLESS_REDIS may be set via docker secrets
Best practice is for redis to be at least password protected: https://redis.io/docs/getting-started/.

Paperless uses `Redis.from_url` (5fe435048b/docker/wait-for-redis.py (L24)) to establish a connection to redis which already enables us to use username/password, e.g. `redis://username:password@redis:6379`.

The redis connection string therefore is a secret and needs to be able to leverage docker secrets, hence this PR.
2022-08-16 12:41:52 -07:00
Quinn Casey
6133f745b7 Merge pull request #1415 from derlucas/main
Update scanners.rst
2022-08-15 06:47:21 -07:00
Quinn Casey
02456b271b Fix incorrect double quote on string 2022-08-15 06:27:08 -07:00
Trenton Holmes
ad1f5ae081 Corrects the timeout's interaction with files waiting to be consumed 2022-08-14 17:47:59 -07:00
Trenton Holmes
86358d5561 Attempts to make production consumer more event driven while still allowing unit testing 2022-08-14 17:47:59 -07:00
shamoon
87953cb98a Merge pull request #1412 from paperless-ngx/fix/created-date-not-required
Fix: `created_date` should not be required
2022-08-14 16:06:48 -07:00
Trenton Holmes
f58e0041ce Resets to a last known working pipenv version 2022-08-14 16:01:22 -07:00
Michael Shamoon
8183de4902 created_date is not supposed to be required 2022-08-14 00:58:31 -07:00
Lucas Pleß
a8c575147b Update scanners.rst
added Brother ADS-4300N. I tested it and can recommend the Device. It scans fast and reliable.
2022-08-13 22:52:17 +02:00
shamoon
09fcc28ded Merge pull request #1397 from paperless-ngx/chore/remove-dependabot-from-projects
Chore: Exclude dependabot PRs from Project, set status to "Needs Review"
2022-08-13 07:27:50 -07:00
Quinn Casey
22fb659b72 Set status of new PRs to "Needs Review" 2022-08-11 10:10:08 -07:00
Quinn Casey
40ae184c4e Exclude dependabot PRs from project 2022-08-11 10:03:37 -07:00
Quinn Casey
18a2a41682 Use fork of release-drafter to exclude prereleases 2022-08-11 09:49:04 -07:00
Quinn Casey
4faff70b5d Merge pull request #1396 from paperless-ngx/chore/add-autolabeler
Chore: Add `autolabeler` to label PRs based on `ref` and title
2022-08-11 09:46:24 -07:00
Quinn Casey
8d3361766d Draft more comprehensive changelog 2022-08-10 17:48:56 -07:00
Quinn Casey
5dd4d0c370 Add documentation as included label 2022-08-10 17:48:56 -07:00
Quinn Casey
a0617c1fad CI: Add autolabeler 2022-08-10 17:19:13 -07:00
Quinn Casey
9e9593b899 Merge pull request #1391 from paperless-ngx/chore-update-deps
Chore: Update Python deps
2022-08-10 09:31:00 -07:00
Trenton Holmes
89b7270233 Updates some deps, skipping scipy 2022-08-10 08:45:49 -07:00
shamoon
3af4808864 Merge pull request #1387 from paperless-ngx/bugfix-task-error-prevents-consume
Bugfix: Catch all exceptions during the task signals
2022-08-10 07:09:29 -07:00
Trenton Holmes
d4c3b7614d Catch all exceptions during the task creation so some error here, but not with a file, will allow consumption to run 2022-08-09 15:50:03 -07:00
Quinn Casey
676ba9ca22 Merge pull request #1376 from paperless-ngx/fix/saved-view-page-param
Fix: saved view page parameter
2022-08-08 10:06:11 -07:00
Michael Shamoon
d0f5cc839f fix navigation to /documents breaks history 2022-08-08 00:05:19 -07:00
Michael Shamoon
110bd65c20 fix pagination, refactor 2022-08-08 00:03:15 -07:00
shamoon
ef0080b0a9 Merge pull request #1369 from paperless-ngx/fix/browser-unsaved-changes
Fix: Correct browser unsaved changes warning
2022-08-07 15:43:10 -07:00
shamoon
a81dc00ccf Merge pull request #1370 from paperless-ngx/fix/date-pasting
Fix: correct date pasting with some non-US formats
2022-08-07 15:42:00 -07:00
Quinn Casey
765fea7f7e Merge pull request #1362 from paperless-ngx/ci-file-health
Chore: use pre-commit in the Ci workflow
2022-08-07 13:33:34 -07:00
Michael Shamoon
a0f48130c0 Fix some date pasting cases 2022-08-07 08:44:39 -07:00
Michael Shamoon
7e2c693c8a Make date suggestions timezone-unaware 2022-08-07 08:37:18 -07:00
Michael Shamoon
7396e4c326 simplify date value format 2022-08-06 21:19:06 -07:00
Michael Shamoon
0175eab031 Fix browser unsaved changes with custom guard 2022-08-06 20:23:05 -07:00
Matthias Eck
3d0a26fdb1 fix(parsers|test_api): fix failed tests 2022-08-06 19:19:10 +02:00
Matthias Eck
c52d18da1f feat(date.component): adding suggestions to frontend 2022-08-06 13:03:20 +02:00
Matthias Eck
e0f341938a docs(configuration.rst): add doc for NUMBER_OF_SUGGESTED_DATES 2022-08-06 13:03:20 +02:00
Matthias Eck
a037e562b2 test(test-date-parsing): test parsing of multiple dates 2022-08-06 13:03:20 +02:00
Matthias Eck
f1084cbdcf feat(settings): add setting to set number of suggested dates 2022-08-06 13:03:20 +02:00
Matthias Eck
f6e4339069 test(test-date-parsing): test parsing of multiple dates 2022-08-06 13:03:20 +02:00
Matthias Eck
a754c6047d test(test-api): update existing tests for suggestions 2022-08-06 13:03:20 +02:00
Matthias Eck
a5d2ae2588 feat(parsers): add generator for date parsing 2022-08-06 13:03:20 +02:00
Michael Shamoon
a6f3378c21 Handle page parameter on saved views 2022-08-05 23:35:13 -07:00
Quinn Casey
ca75fb5664 Merge pull request #1358 from paperless-ngx/bugfix-ip-bind-addr
Bugfix: Allow webserver bind address to be configured
2022-08-04 12:35:28 -07:00
Trenton Holmes
32861ad592 Removes no longer needed files 2022-08-04 11:11:49 -07:00
Trenton Holmes
ada8516803 Allows the webserver binding address to be configured via the environment 2022-08-04 07:43:23 -07:00
Trenton Holmes
d5c27a95aa Fixes minor linting 2022-08-03 13:26:04 -07:00
Trenton Holmes
6b8a21d2b0 Test pre-commit action 2022-08-03 13:20:02 -07:00
Trenton Holmes
cb7e6f8cd0 Adds a pull of all images for the main image after the pruning 2022-08-03 10:19:15 -07:00
Trenton Holmes
f48a2cb65e Fixes the untagged image deletion so it will not remove images which are referred to by a multi-arch manifest image 2022-08-03 10:19:15 -07:00
Trenton Holmes
0fdd3d56f4 Changes the cleanup images workflow so it uses a OAuth token with the correct scope (GITHUB_TOKEN is not enough). Also prevents running if the token is not defined and generally does commenting/cleanups" 2022-08-03 10:19:15 -07:00
Quinn Casey
173934258c Merge pull request #1354 from paperless-ngx/bugfix-exception-chains
Bugfix: Chain exceptions during exception handling
2022-08-03 09:59:26 -07:00
Trenton Holmes
b70e21a6d5 When raising an exception during exception handling, chain them together for slightly cleaner logs 2022-08-03 09:00:56 -07:00
shamoon
cafb884991 Merge pull request #1352 from tooomm/patch-1
docs: fix small typo
2022-08-03 06:42:13 -07:00
tooomm
94b09614d9 typo 2022-08-03 15:00:23 +02:00
shamoon
7488505e37 Update dev version string
[ci skip]
2022-08-02 13:28:29 -07:00
Trenton Holmes
641ff9a71d Revert "Bump watchfiles from 0.15.0 to 0.16.1"
This reverts commit b596502f74.
2022-08-02 11:25:01 -07:00
dependabot[bot]
b596502f74 Bump watchfiles from 0.15.0 to 0.16.1
Bumps [watchfiles](https://github.com/samuelcolvin/watchfiles) from 0.15.0 to 0.16.1.
- [Release notes](https://github.com/samuelcolvin/watchfiles/releases)
- [Commits](https://github.com/samuelcolvin/watchfiles/compare/v0.15.0...v0.16.1)

---
updated-dependencies:
- dependency-name: watchfiles
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 08:46:02 -07:00
dependabot[bot]
4fbd760005 Bump leonsteinhaeuser/project-beta-automations from 1.2.1 to 1.3.0
Bumps [leonsteinhaeuser/project-beta-automations](https://github.com/leonsteinhaeuser/project-beta-automations) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/leonsteinhaeuser/project-beta-automations/releases)
- [Commits](https://github.com/leonsteinhaeuser/project-beta-automations/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: leonsteinhaeuser/project-beta-automations
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 08:10:45 -07:00
dependabot[bot]
6a5ac15b07 Bump tj-actions/changed-files from 23.1 to 24
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 23.1 to 24.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v23.1...v24)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 07:55:28 -07:00
shamoon
57b419fa87 Merge pull request #1342 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-10.3.1
Bump cypress from 10.3.0 to 10.3.1 in /src-ui
2022-08-01 15:49:45 -07:00
shamoon
52ce54930b Merge pull request #1343 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-color-8.0.1
Bump ngx-color from 7.3.3 to 8.0.1 in /src-ui
2022-08-01 13:59:15 -07:00
dependabot[bot]
fa9898ebe1 Bump ngx-color from 7.3.3 to 8.0.1 in /src-ui
Bumps [ngx-color](https://github.com/scttcper/ngx-color) from 7.3.3 to 8.0.1.
- [Release notes](https://github.com/scttcper/ngx-color/releases)
- [Commits](https://github.com/scttcper/ngx-color/compare/v7.3.3...v8.0.1)

---
updated-dependencies:
- dependency-name: ngx-color
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:56:48 +00:00
shamoon
de4b3c39b9 Merge pull request #1330 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/cli-14.1.0
Bump @angular/cli from 14.0.4 to 14.1.0 in /src-ui
2022-08-01 13:55:41 -07:00
Michael Shamoon
232e358a34 bump all angular packages together 2022-08-01 13:54:09 -07:00
dependabot[bot]
a0d35f9262 Bump @angular/cli from 14.0.4 to 14.1.0 in /src-ui
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 14.0.4 to 14.1.0.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/14.0.4...14.1.0)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:46:55 +00:00
dependabot[bot]
8883ef81dc Bump cypress from 10.3.0 to 10.3.1 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.3.0 to 10.3.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.3.0...v10.3.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:46:27 +00:00
shamoon
39a425eca4 Merge pull request #1341 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/node-18.6.3
Bump @types/node from 18.0.0 to 18.6.3 in /src-ui
2022-08-01 13:45:09 -07:00
dependabot[bot]
e31d383cfc Bump @types/node from 18.0.0 to 18.6.3 in /src-ui
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.0 to 18.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:44:37 +00:00
shamoon
cb104b60f4 Merge pull request #1340 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-preset-angular-12.2.0
Bump jest-preset-angular from 12.1.0 to 12.2.0 in /src-ui
2022-08-01 13:43:47 -07:00
dependabot[bot]
b88963c900 Bump jest-preset-angular from 12.1.0 to 12.2.0 in /src-ui
Bumps [jest-preset-angular](https://github.com/thymikee/jest-preset-angular) from 12.1.0 to 12.2.0.
- [Release notes](https://github.com/thymikee/jest-preset-angular/releases)
- [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thymikee/jest-preset-angular/compare/v12.1.0...v12.2.0)

---
updated-dependencies:
- dependency-name: jest-preset-angular
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:39:58 +00:00
shamoon
3597abbcd7 Merge pull request #1326 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/concurrently-7.3.0
Bump concurrently from 7.2.2 to 7.3.0 in /src-ui
2022-08-01 13:38:44 -07:00
dependabot[bot]
0f780b6271 Bump concurrently from 7.2.2 to 7.3.0 in /src-ui
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 7.2.2 to 7.3.0.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v7.2.2...v7.3.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:38:16 +00:00
shamoon
f1ce4e1f5b Merge pull request #1337 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ng2-pdf-viewer-9.1.0
Bump ng2-pdf-viewer from 9.0.0 to 9.1.0 in /src-ui
2022-08-01 13:38:11 -07:00
dependabot[bot]
5d0d800c0a Bump ng2-pdf-viewer from 9.0.0 to 9.1.0 in /src-ui
Bumps [ng2-pdf-viewer](https://github.com/VadimDez/ng2-pdf-viewer) from 9.0.0 to 9.1.0.
- [Release notes](https://github.com/VadimDez/ng2-pdf-viewer/releases)
- [Changelog](https://github.com/VadimDez/ng2-pdf-viewer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/VadimDez/ng2-pdf-viewer/compare/9.0.0...9.1.0)

---
updated-dependencies:
- dependency-name: ng2-pdf-viewer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:37:34 +00:00
shamoon
3b330ef22f Merge pull request #1336 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-environment-jsdom-28.1.3
Bump jest-environment-jsdom from 28.1.2 to 28.1.3 in /src-ui
2022-08-01 13:36:22 -07:00
dependabot[bot]
873bb4fd2d Bump jest-environment-jsdom from 28.1.2 to 28.1.3 in /src-ui
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.2 to 28.1.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.3/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:35:56 +00:00
shamoon
3973df64ba Merge pull request #1331 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-file-drop-14.0.1
Bump ngx-file-drop from 13.0.0 to 14.0.1 in /src-ui
2022-08-01 13:35:04 -07:00
shamoon
8cda62ae92 Merge pull request #1333 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-and-types/jest-28.1.3
Bump jest and @types/jest in /src-ui
2022-08-01 13:29:31 -07:00
dependabot[bot]
b8e1a49f85 Bump jest and @types/jest in /src-ui
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together.

Updates `jest` from 28.1.2 to 28.1.3
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.3/packages/jest)

Updates `@types/jest` from 28.1.4 to 28.1.6
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:25:09 +00:00
shamoon
f9147b5405 Merge pull request #1327 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/bootstrap-5.2.0
Bump bootstrap from 5.1.3 to 5.2.0 in /src-ui
2022-08-01 13:21:46 -07:00
dependabot[bot]
878f727a2c Bump ngx-file-drop from 13.0.0 to 14.0.1 in /src-ui
Bumps [ngx-file-drop](https://github.com/georgipeltekov/ngx-file-drop) from 13.0.0 to 14.0.1.
- [Release notes](https://github.com/georgipeltekov/ngx-file-drop/releases)
- [Changelog](https://github.com/georgipeltekov/ngx-file-drop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/georgipeltekov/ngx-file-drop/compare/v13.0.0...v14.0.1)

---
updated-dependencies:
- dependency-name: ngx-file-drop
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:19:33 +00:00
shamoon
0169ee4885 Merge pull request #1324 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/typescript-4.7.4
Bump typescript from 4.6.4 to 4.7.4 in /src-ui
2022-08-01 13:18:12 -07:00
dependabot[bot]
904faf27c2 Bump typescript from 4.6.4 to 4.7.4 in /src-ui
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.6.4 to 4.7.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.6.4...v4.7.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:15:13 +00:00
shamoon
d2a38fe05c Merge pull request #1325 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ts-node-10.9.1
Bump ts-node from 10.8.1 to 10.9.1 in /src-ui
2022-08-01 13:13:49 -07:00
shamoon
9a5d06239f Merge pull request #1323 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/rxjs-7.5.6
Bump rxjs from 7.5.5 to 7.5.6 in /src-ui
2022-08-01 13:12:06 -07:00
dependabot[bot]
a1fad471a9 Bump bootstrap from 5.1.3 to 5.2.0 in /src-ui
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.1.3 to 5.2.0.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.1.3...v5.2.0)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:09:16 +00:00
dependabot[bot]
57a97365b6 Bump ts-node from 10.8.1 to 10.9.1 in /src-ui
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.8.1 to 10.9.1.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.8.1...v10.9.1)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:08:43 +00:00
dependabot[bot]
cce36906b1 Bump rxjs from 7.5.5 to 7.5.6 in /src-ui
Bumps [rxjs](https://github.com/reactivex/rxjs) from 7.5.5 to 7.5.6.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/7.5.5...7.5.6)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:08:06 +00:00
Nico Fricke
36158609f0 change default matching algo to auto and move to constant 2022-08-01 09:22:13 +02:00
Quinn Casey
da99ba114b Merge pull request #1305 from paperless-ngx/fix/1299+1300
Fix: missing tooltip translation & filter editor wrapping
2022-07-31 20:40:48 -07:00
Michael Shamoon
9a66bd3c34 Better filter editor wrapping across display sizes
Closes #1299
2022-07-31 20:25:21 -07:00
Quinn Casey
0d23b33c0e Merge pull request #1316 from paperless-ngx/feature-docker-pipenv
Feature: Remove requirements.txt and use pipenv everywhere
2022-07-31 18:46:59 -07:00
Trenton Holmes
e721092c2a Changes the Dockerfile to use pipenv and the releases to use pipenv, removing the need for a requirements.txt 2022-07-30 13:41:08 -07:00
Quinn Casey
8c7afc5646 Merge branch 'main' into dev 2022-07-30 08:41:36 -07:00
Michael Shamoon
7752d83781 Fix "suggest an idea" not using translation
Closes #1300
2022-07-29 14:48:11 -07:00
Quinn Casey
4b45e94beb Merge pull request #1303 from paperless-ngx/bugfix-barcode-and-dirs
Bugfix: Interaction between barcode and directories as tags
2022-07-29 12:25:40 -07:00
Trenton Holmes
2a4ec13c8e Fixes issue where barcode containing files wouldn't be placed into the same directory after splitting 2022-07-29 10:22:54 -07:00
Michael Shamoon
20671c718e Run prettier over changelog.md
[ci skip]
2022-07-28 20:00:59 -07:00
github-actions[bot]
e73db49ed0 [Documentation] Add v1.8.0 changelog (#1298)
* Changelog  - GHA

* Update changelog.md

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-07-28 19:52:13 -07:00
Michael Shamoon
0553824df2 Revert "Update changelog.md"
This reverts commit 3a031084f3.
2022-07-28 15:41:39 -07:00
Michael Shamoon
71bc2c5944 Add -dev to version string 2022-07-28 15:36:55 -07:00
Michael Shamoon
05feadbb7a Squashed commit of the following:
commit a4709b1175
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Jul 28 15:36:13 2022 -0700

    Update stale.yml

    [skip ci]

commit 3a031084f3
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Jul 28 15:24:23 2022 -0700

    Update changelog.md

commit 0c517e5351
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Jul 28 15:18:49 2022 -0700

    v1.8.0 version strings

commit 5fe435048b
Merge: 278cedf3 a722bfd0
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Jul 28 15:17:30 2022 -0700

    Merge pull request #1240 from paperless-ngx/beta

    [Beta] Paperless-ngx v1.8.0 Release Candidate 1

commit a722bfd099
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Thu Jul 28 07:46:12 2022 -0700

    New Crowdin updates (#1291)

    * New translations django.po (French)
    [ci skip]

    * New translations messages.xlf (French)
    [ci skip]

    * New translations django.po (French)
    [ci skip]

    * New translations messages.xlf (French)
    [ci skip]

    * New translations messages.xlf (Turkish)
    [ci skip]

    * New translations django.po (Turkish)
    [ci skip]

commit f3d99a5fdb
Merge: ca334770 79de0989
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Jul 26 11:21:42 2022 -0700

    Merge pull request #1277 from paperless-ngx/fix/redo-ocr-button-on-edit

    Fix/feature: add redo ocr button to document edit view

commit 79de0989d5
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Jul 26 09:54:05 2022 -0700

    fix button icon spacing on mobile

commit ca334770b7
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Jul 26 09:45:21 2022 -0700

    New Crowdin updates (#1242)

    * New translations messages.xlf (Turkish)
    [ci skip]

    * New translations messages.xlf (German)
    [ci skip]

    * New translations django.po (German)
    [ci skip]

    * New translations messages.xlf (Italian)
    [ci skip]

    * New translations messages.xlf (Italian)
    [ci skip]

    * New translations messages.xlf (Finnish)
    [ci skip]

    * New translations messages.xlf (Finnish)
    [ci skip]

commit 1071357505
Merge: f32dfe02 ef790ca6
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Jul 26 09:44:42 2022 -0700

    Merge pull request #1268 from paperless-ngx/bugfix-db-locked

    Bugfix: Adds configuration for database timeout, fixing database locked error

commit f32dfe0278
Merge: 611707a3 4e78ca5d
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Jul 25 12:59:31 2022 -0700

    Merge pull request #1261 from paperless-ngx/fix/b1.8.0-ng-select-dropdowns

    Fix: dropdown selected items not visible again

commit 278cedf3d0
Merge: b141671d ecc4553e
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Jul 25 09:25:52 2022 -0700

    Merge pull request #1272 from paperless-ngx/fix-1263

    Documentation: fix occasional code block color legibility

commit 45a6b5a436
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Jul 24 20:15:26 2022 -0700

    Add redo OCR button to document edit

commit 611707a3d1
Merge: 2d88638d b4d20d9b
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Jul 24 19:59:30 2022 -0700

    Merge pull request #1276 from paperless-ngx/bugfix-webp-import

    Bugfix: Document import doesn't convert thumbnails to WebP

commit b4d20d9b9a
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Sun Jul 24 10:22:53 2022 -0700

    Fixes document import copying PNG files to .webp extensions without actual conversion

commit ecc4553e67
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Jul 22 15:10:33 2022 -0700

    fix occasional code block color legibility

commit ef790ca6f4
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Fri Jul 22 11:08:52 2022 -0700

    Fixes the copy and paste of the log line

commit 2d88638da7
Merge: 0e2e5f34 91ba0bd0
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Jul 22 10:45:53 2022 -0700

    Merge pull request #1269 from paperless-ngx/beta-deps-final

    Chore: Locks dependencies to the final versions for the beta

commit 91ba0bd0af
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Fri Jul 22 08:53:02 2022 -0700

    Locks dependencies to the final versions for the beta

commit 0e2e5f3413
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Tue Jul 19 13:57:00 2022 -0700

    Creates utiliy to ensure all paths in settings are normalized and absolute

commit 7a99dcf693
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Thu Jul 21 08:02:11 2022 -0700

    Adds configuration for database timeout, documentation and troubleshotting suggestion

commit 4e78ca5d82
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Jul 20 11:15:35 2022 -0700

    remove merge error ng-select css

commit 83de38e56f
Merge: f4be2e4f b1b6d50a
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Jul 20 08:26:12 2022 -0700

    Merge pull request #1247 from paperless-ngx/bugfix-pikepdf-ocrmypdf-warnings

    Bugfix: Adds pngquant and jbig2dec to Docker image

commit f4be2e4fe7
Merge: 4444925d 16b0f7f9
Author: Quinn Casey <quinn@quinncasey.com>
Date:   Tue Jul 19 21:03:16 2022 -0700

    Merge pull request #1259 from paperless-ngx/chore-add-ci-hadolint

    Chore: Add Hadolint job to CI

commit 16b0f7f9ee
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Tue Jul 19 14:18:47 2022 -0700

    Removes a Dockerfile I can't find referenced anywhere

commit 27721aef71
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Tue Jul 19 14:01:47 2022 -0700

    Fixes and updates the Hadolint action version

commit 329a317fdf
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Tue Jul 19 13:54:33 2022 -0700

    Configure Hadolint in a single location for both hooks and CI

commit daad634894
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Fri Jul 15 13:45:23 2022 -0700

    Adds a CI job for hadolint over all the Dockerfiles, fixes the minor thing it complained about

commit 4444925dea
Merge: 4c697ab5 9c1ae96d
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Jul 18 15:55:29 2022 -0700

    Merge pull request #1249 from paperless-ngx/fix-generated-changelog

    [CI] Fix automatic changelog generation on release

commit 9c1ae96d33
Author: Quinn Casey <quinn@quinncasey.com>
Date:   Mon Jul 18 09:48:03 2022 -0700

    Create PR for changelog instead of direct commit

commit b1b6d50af6
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Mon Jul 18 09:46:31 2022 -0700

    Adds a couple packages to the Docker image for ocrmypdf and pikepdf

commit 4c697ab50e
Author: Quinn Casey <quinn@quinncasey.com>
Date:   Sun Jul 17 15:23:28 2022 -0700

    Bump version to beta

commit b141671d90
Merge: 48dfbbeb 2ab2d912
Author: Quinn Casey <quinn@quinncasey.com>
Date:   Sun Jul 17 13:18:57 2022 -0700

    Merge pull request #1237 from tooomm/patch-1

    chore: Run stale bot only on certain labels

commit 2ab2d9127d
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Jul 15 20:19:28 2022 -0700

    Use cant-reproduce for stale

commit 278453451e
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Fri Jul 15 21:18:38 2022 +0200

    only run on certain labels

commit 48dfbbebc6
Merge: 8efb97ef e568b300
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Jul 3 07:42:20 2022 -0700

    Merge pull request #1110 from paperless-ngx/update-issue-form

commit 8efb97ef4e
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Jul 2 19:06:32 2022 -0700

    Update stale.yml

    [ci skip]

commit d8cda7fc1b
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Jul 2 17:51:39 2022 -0700

    Use any-of-labels for stalebot

    [ci skip]

commit 68f0cf419b
Merge: 666b9385 26b12512
Author: Felix E <felix@eckhofer.com>
Date:   Mon Jun 20 14:25:59 2022 +0200

    Merge pull request #1148 from pReya/patch-1

    fix: update scanner capability

commit 26b12512b1
Author: Moritz Stückler <moritz.stueckler@gmail.com>
Date:   Mon Jun 20 12:06:54 2022 +0200

    fix: update scanner capability

    The Brother ADS-A1700W does indeed support SFTP. I've just bought it, and set it up like this.

commit e568b3000e
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Jun 7 15:28:49 2022 -0700

    Add lsio to issue form

commit 666b938550
Merge: de5eaf1c 163231d3
Author: Quinn Casey <quinn@quinncasey.com>
Date:   Thu May 19 17:23:23 2022 -0700

    Merge pull request #990 from tooomm/patch-2

    Docs: Fix headings and add links to PRs in changelog

commit 163231d307
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Thu May 19 23:12:40 2022 +0200

    Link issues, capitalization and minor fixes

commit e530750fc6
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Thu May 19 22:05:43 2022 +0200

    update heading levels for v1.7.0
2022-07-28 15:36:24 -07:00
Michael Shamoon
a4709b1175 Update stale.yml
[skip ci]
2022-07-28 15:36:13 -07:00
Michael Shamoon
3a031084f3 Update changelog.md 2022-07-28 15:24:23 -07:00
Michael Shamoon
0c517e5351 v1.8.0 version strings 2022-07-28 15:18:49 -07:00
shamoon
5fe435048b Merge pull request #1240 from paperless-ngx/beta
[Beta] Paperless-ngx v1.8.0 Release Candidate 1
2022-07-28 15:17:30 -07:00
Paperless-ngx Translation Bot [bot]
a722bfd099 New Crowdin updates (#1291)
* New translations django.po (French)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations django.po (French)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]
2022-07-28 07:46:12 -07:00
shamoon
f3d99a5fdb Merge pull request #1277 from paperless-ngx/fix/redo-ocr-button-on-edit
Fix/feature: add redo ocr button to document edit view
2022-07-26 11:21:42 -07:00
Michael Shamoon
79de0989d5 fix button icon spacing on mobile 2022-07-26 09:54:05 -07:00
Paperless-ngx Translation Bot [bot]
ca334770b7 New Crowdin updates (#1242)
* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]
2022-07-26 09:45:21 -07:00
shamoon
1071357505 Merge pull request #1268 from paperless-ngx/bugfix-db-locked
Bugfix: Adds configuration for database timeout, fixing database locked error
2022-07-26 09:44:42 -07:00
shamoon
f32dfe0278 Merge pull request #1261 from paperless-ngx/fix/b1.8.0-ng-select-dropdowns
Fix: dropdown selected items not visible again
2022-07-25 12:59:31 -07:00
shamoon
278cedf3d0 Merge pull request #1272 from paperless-ngx/fix-1263
Documentation: fix occasional code block color legibility
2022-07-25 09:25:52 -07:00
Michael Shamoon
45a6b5a436 Add redo OCR button to document edit 2022-07-24 20:15:26 -07:00
shamoon
611707a3d1 Merge pull request #1276 from paperless-ngx/bugfix-webp-import
Bugfix: Document import doesn't convert thumbnails to WebP
2022-07-24 19:59:30 -07:00
Trenton Holmes
b4d20d9b9a Fixes document import copying PNG files to .webp extensions without actual conversion 2022-07-24 10:22:53 -07:00
Michael Shamoon
ecc4553e67 fix occasional code block color legibility 2022-07-22 15:12:18 -07:00
Trenton Holmes
ef790ca6f4 Fixes the copy and paste of the log line 2022-07-22 11:08:52 -07:00
shamoon
2d88638da7 Merge pull request #1269 from paperless-ngx/beta-deps-final
Chore: Locks dependencies to the final versions for the beta
2022-07-22 10:45:53 -07:00
Trenton Holmes
91ba0bd0af Locks dependencies to the final versions for the beta 2022-07-22 08:53:02 -07:00
Trenton Holmes
0e2e5f3413 Creates utiliy to ensure all paths in settings are normalized and absolute 2022-07-22 08:48:17 -07:00
Trenton Holmes
7a99dcf693 Adds configuration for database timeout, documentation and troubleshotting suggestion 2022-07-22 08:40:08 -07:00
Michael Shamoon
4e78ca5d82 remove merge error ng-select css 2022-07-20 11:15:35 -07:00
shamoon
83de38e56f Merge pull request #1247 from paperless-ngx/bugfix-pikepdf-ocrmypdf-warnings
Bugfix: Adds pngquant and jbig2dec to Docker image
2022-07-20 08:26:12 -07:00
Quinn Casey
f4be2e4fe7 Merge pull request #1259 from paperless-ngx/chore-add-ci-hadolint
Chore: Add Hadolint job to CI
2022-07-19 21:03:16 -07:00
Trenton Holmes
16b0f7f9ee Removes a Dockerfile I can't find referenced anywhere 2022-07-19 14:18:47 -07:00
Trenton Holmes
27721aef71 Fixes and updates the Hadolint action version 2022-07-19 14:01:47 -07:00
Trenton Holmes
329a317fdf Configure Hadolint in a single location for both hooks and CI 2022-07-19 13:54:33 -07:00
Trenton Holmes
daad634894 Adds a CI job for hadolint over all the Dockerfiles, fixes the minor thing it complained about 2022-07-19 13:50:15 -07:00
shamoon
4444925dea Merge pull request #1249 from paperless-ngx/fix-generated-changelog
[CI] Fix automatic changelog generation on release
2022-07-18 15:55:29 -07:00
Quinn Casey
9c1ae96d33 Create PR for changelog instead of direct commit 2022-07-18 09:48:03 -07:00
Trenton Holmes
b1b6d50af6 Adds a couple packages to the Docker image for ocrmypdf and pikepdf 2022-07-18 09:46:31 -07:00
Quinn Casey
4c697ab50e Bump version to beta 2022-07-17 15:23:28 -07:00
Paperless-ngx Translation Bot [bot]
7450088674 New Crowdin updates (#1238)
* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]
2022-07-17 15:22:35 -07:00
Quinn Casey
b141671d90 Merge pull request #1237 from tooomm/patch-1
chore: Run stale bot only on certain labels
2022-07-17 13:18:57 -07:00
shamoon
2ab2d9127d Use cant-reproduce for stale 2022-07-15 20:19:28 -07:00
tooomm
278453451e only run on certain labels 2022-07-15 21:18:38 +02:00
Paperless-ngx Translation Bot [bot]
91ee7972d2 New Crowdin updates (#1235)
* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]
2022-07-15 08:41:29 -07:00
shamoon
d1f59a6590 Merge pull request #1212 from theEndBeta/feature_rootless_and_container_repo
Enable rootless container w/ CI tweaks/bugfixes
2022-07-15 08:41:09 -07:00
Aidan Stein
cdecf8904e move supervisord call into wrapper script 2022-07-15 11:00:46 -04:00
Aidan Stein
3d16266c69 pr comment - documentation edits 2022-07-15 11:00:46 -04:00
Aidan Stein
191676b011 switch from bind mount to COPY to avoid requiring host directory relabeling on selinux enabled systems 2022-07-15 11:00:46 -04:00
Aidan Stein
ea07b261ad negate second gosu command when running as paperless user 2022-07-15 11:00:46 -04:00
Aidan Stein
e86f737320 pr comment(s) - CI typos 2022-07-15 11:00:46 -04:00
Aidan Stein
9a8562c624 add instructions for rootless 2022-07-15 11:00:46 -04:00
Aidan Stein
145c41f462 container repository name must be lowercase 2022-07-15 11:00:45 -04:00
Aidan Stein
1d38367e79 allow podman build 2022-07-15 10:58:41 -04:00
Aidan Stein
f58c2d0a7b allow rootless (as paperless user) 2022-07-15 10:58:41 -04:00
Paperless-ngx Translation Bot [bot]
ca7a6fe1f1 New Crowdin updates (#1234)
* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]
2022-07-14 19:37:51 -07:00
shamoon
95042f73c7 Merge pull request #1154 from ziprandom/feature-use-env-vars-in-pre-post-scripts
Feature use env vars in pre post scripts
2022-07-14 19:37:19 -07:00
Trenton Holmes
678bcb171a Re-adds the script arguments 2022-07-14 08:50:00 -07:00
shamoon
8da7e505c0 Merge pull request #1227 from paperless-ngx/feature-reduce-worker-counts
Chore: Reduces webserver and task worker count to 1 by default
2022-07-12 09:56:21 -07:00
Trenton Holmes
72ce4405d5 Updates all dependencies and re-generates the lock files 2022-07-11 23:29:46 +02:00
Paperless-ngx Translation Bot [bot]
d8e3d91a79 New Crowdin updates (#1214)
* New translations django.po (Croatian)
[ci skip]

* New translations django.po (Croatian)
[ci skip]

* New translations messages.xlf (Croatian)
[ci skip]

* New translations messages.xlf (Croatian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]
2022-07-11 14:02:58 -07:00
Trenton Holmes
edaaedae36 Reduces webserver and task worker count to 1 by default 2022-07-11 13:54:04 -07:00
shamoon
da8246d8c3 Merge pull request #1220 from paperless-ngx/bugfix-oserror-msg
Bugfix: Include the actual OSError string when a file can't be opened for consumption
2022-07-11 12:26:08 -07:00
Trenton Holmes
5243ae80b4 Feature: Don't push feature development branches to DockerHub (#1219)
* Don't push to the DockerHub except for certain refs

* Enables deletetion of feature images

* Adds links to the API docs for the end points

* Makes it clear in the logs a dry-run vs actual deletion event
2022-07-11 12:22:43 -07:00
Trenton Holmes
3aca576a0d Includes the actual OSError string in the log, instead of assuming it's a busy file 2022-07-11 11:57:02 -07:00
Paperless-ngx Translation Bot [bot]
0bb9d91eae New Crowdin updates (#1090)
* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations django.po (Luxembourgish)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (Italian)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Spanish)
[ci skip]

* New translations django.po (Spanish)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (Japanese)
[ci skip]

* New translations messages.xlf (Japanese)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations django.po (Croatian)
[ci skip]

* New translations messages.xlf (Croatian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Croatian)
[ci skip]

* New translations messages.xlf (Croatian)
[ci skip]

* New translations django.po (Romanian)
[ci skip]

* New translations django.po (French)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations django.po (Czech)
[ci skip]

* New translations django.po (Danish)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations django.po (Italian)
[ci skip]

* New translations messages.xlf (Japanese)
[ci skip]

* New translations django.po (Dutch)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations django.po (Portuguese)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations django.po (Slovenian)
[ci skip]

* New translations django.po (Swedish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Portuguese, Brazilian)
[ci skip]

* New translations django.po (Luxembourgish)
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations django.po (Japanese)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations django.po (Spanish)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations django.po (Norwegian)
[ci skip]

* New translations messages.xlf (Norwegian)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations django.po (Arabic, Saudi Arabia)
[ci skip]
2022-07-08 15:21:13 -07:00
Michael Shamoon
8825d6b15f Update translation source strings 2022-07-08 14:12:07 -07:00
shamoon
1f73ca21bf Merge pull request #1020 from paperless-ngx/feature-frontend-task-queue
Feature: frontend task queue
2022-07-08 14:06:24 -07:00
Michael Shamoon
2db0854eef fix conflicting migrations 2022-07-08 14:02:43 -07:00
shamoon
f66e589312 Merge pull request #1133 from paperless-ngx/feature-prevent-text-dupe-api-calls
Fix: Prevent duplicate api calls on text filtering
2022-07-08 13:56:45 -07:00
Michael Shamoon
5c9ad3068b simplify filter rule comparison 2022-07-08 13:55:27 -07:00
shamoon
d07b786da6 Merge pull request #1140 from paperless-ngx/chore-image-tag-cleanups 2022-07-07 06:50:47 -07:00
Trenton Holmes
da5d32ed89 Relocks the dependencies following latest updates 2022-07-05 08:20:35 +02:00
Trenton Holmes
55dadea98e No need for a branch here, the loop takes care of it 2022-07-05 08:20:35 +02:00
Trenton Holmes
77fbbe95ff Updates the classifier to catch warnings from scikit-learn and rebuild the model file when this happens 2022-07-05 08:20:35 +02:00
Trenton Holmes
1aeb95396b Updates scikit-learn and fixes the warning this normally generates in the unit tests 2022-07-05 08:20:35 +02:00
shamoon
48dfbbebc6 Merge pull request #1110 from paperless-ngx/update-issue-form 2022-07-03 07:42:20 -07:00
Trenton Holmes
ccf3a9f3b2 Implements reading from a Docker secrets file in place of an environment variable for certain settings 2022-07-03 10:56:01 +02:00
dependabot[bot]
c0cb97bd42 Bump pillow from 9.1.1 to 9.2.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.1.1 to 9.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.1.1...9.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-03 10:47:43 +02:00
shamoon
8efb97ef4e Update stale.yml
[ci skip]
2022-07-02 19:06:32 -07:00
shamoon
d8cda7fc1b Use any-of-labels for stalebot
[ci skip]
2022-07-02 17:51:39 -07:00
shamoon
ee9f1e7b70 Merge pull request #957 from paperless-ngx/feature-created-date
Feature: make frontend timezone un-aware
2022-07-02 16:58:30 -07:00
shamoon
92dd70098c Merge branch 'dev' into feature-frontend-task-queue 2022-07-02 16:54:16 -07:00
shamoon
4bea4c69a4 Merge pull request #1139 from paperless-ngx/feature-redo-ocr
Feature: Management command to redo OCR
2022-07-02 09:02:32 -07:00
Michael Shamoon
7734325b71 Update tasks.py 2022-07-02 08:42:59 -07:00
shamoon
186ae844bc Merge branch 'dev' into feature-redo-ocr 2022-07-02 08:41:18 -07:00
Michael Shamoon
c9bdf1c184 Frontend UI for redo OCR 2022-07-02 08:39:09 -07:00
Michael Shamoon
13ffe468df Extract redo ocr to task 2022-07-02 08:39:09 -07:00
Trenton Holmes
a090cf7a10 Updates following testing of command 2022-07-02 08:39:09 -07:00
Trenton Holmes
b7250477b5 Includes the progress bar 2022-07-02 08:39:09 -07:00
Trenton Holmes
dfd16c5187 Saves work on a new management comment to re-ocr a file 2022-07-02 08:39:09 -07:00
shamoon
4afd6b78af Merge pull request #1122 from paperless-ngx/feature-quick-toggleable-filters
Feature / fix quick toggleable filters
2022-07-02 08:26:42 -07:00
Trenton Holmes
398f6e5b0c Removes variable which was never set, removed unneeded serializer method 2022-07-02 16:19:22 +02:00
Trenton Holmes
d7f7d839f8 Adds invalid storage path format test 2022-07-02 16:19:22 +02:00
Trenton Holmes
49a843dcdd Changes the simple-alpha parsing test to use a tempdir so the original isn't modified in Git 2022-07-02 16:19:22 +02:00
Trenton Holmes
ec045e81f2 Moves the barcode related functionality out of tasks and into its own location. Splits up the testing based on that 2022-07-02 16:19:22 +02:00
Trenton Holmes
d8a7828cb5 Splits tests for the tasks into their own classes 2022-07-02 16:19:22 +02:00
Michael Shamoon
e32cb12ad7 fix content_type on test_api_create_storage_path 2022-07-02 16:19:22 +02:00
Trenton Holmes
ee2847cfea Omit a few files that don't really make sense to cover at all 2022-07-02 16:19:22 +02:00
Trenton Holmes
22e00a7080 Adds a few more test cases for coverage and adds no coverage to some others 2022-07-02 16:19:22 +02:00
Trenton Holmes
cbe567069f Fixes the whitenoise warning in the test suite 2022-07-02 16:19:22 +02:00
Trenton Holmes
53baed0389 Increases test coverage of storage paths 2022-07-02 16:19:22 +02:00
dependabot[bot]
39cb9589c8 Bump watchdog from 2.1.8 to 2.1.9 (#1132) 2022-07-02 14:07:32 +00:00
dependabot[bot]
bde03f3574 Bump scikit-learn from 1.0.2 to 1.1.1 (#992) 2022-07-02 13:44:01 +00:00
dependabot[bot]
8f31d150fd Bump setuptools from 62.3.3 to 62.6.0
Bumps [setuptools](https://github.com/pypa/setuptools) from 62.3.3 to 62.6.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/CHANGES.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v62.3.3...v62.6.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 15:08:18 +02:00
dependabot[bot]
453dbbb031 Bump django-filter from 21.1 to 22.1
Bumps [django-filter](https://github.com/carltongibson/django-filter) from 21.1 to 22.1.
- [Release notes](https://github.com/carltongibson/django-filter/releases)
- [Changelog](https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst)
- [Commits](https://github.com/carltongibson/django-filter/compare/21.1...22.1)

---
updated-dependencies:
- dependency-name: django-filter
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 15:07:27 +02:00
dependabot[bot]
421754fff6 Bump actions/setup-python from 3 to 4
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 14:26:49 +02:00
dependabot[bot]
05ec5feacf Bump sphinx from 4.5.0 to 5.0.2
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.5.0 to 5.0.2.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/5.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v4.5.0...v5.0.2)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 14:25:57 +02:00
dependabot[bot]
639d9b27c8 Bump docker/metadata-action from 3 to 4
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 3 to 4.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 14:25:14 +02:00
dependabot[bot]
2c99d027f3 Bump tj-actions/changed-files from 22.1 to 23.1
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 22.1 to 23.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v22.1...v23.1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 14:24:13 +02:00
dependabot[bot]
4f176682dc Merge pull request #1177 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/cli-14.0.4 2022-07-02 08:09:09 +00:00
Michael Shamoon
13ef41bd42 Update ngbRadioGroups to native buttons 2022-07-02 00:55:18 -07:00
Michael Shamoon
3c6ba80323 Merge branch 'dependabot/npm_and_yarn/src-ui/dev/angular/cli-14.0.4' of github.com:paperless-ngx/paperless-ngx into dependabot/npm_and_yarn/src-ui/dev/angular/cli-14.0.4 2022-07-01 14:15:10 -07:00
Michael Shamoon
fcfa8dfac2 bump angular, ng-bootstrap, ng-select 2022-07-01 14:12:17 -07:00
dependabot[bot]
5b73e9aee6 Bump @angular/cli from 13.3.7 to 14.0.4 in /src-ui
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 13.3.7 to 14.0.4.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.3.7...14.0.4)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 14:10:51 -07:00
shamoon
9ead264300 Merge pull request #1187 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-10.3.0
Bump cypress from 10.0.1 to 10.3.0 in /src-ui
2022-07-01 13:42:06 -07:00
dependabot[bot]
a617eda321 Bump cypress from 10.0.1 to 10.3.0 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 10.0.1 to 10.3.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v10.0.1...v10.3.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:41:20 +00:00
shamoon
c913fa65b2 Merge pull request #1185 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/zone.js-0.11.6
Bump zone.js from 0.11.5 to 0.11.6 in /src-ui
2022-07-01 13:40:40 -07:00
shamoon
497c8c84e5 Merge pull request #1184 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ts-node-10.8.1
Bump ts-node from 10.8.0 to 10.8.1 in /src-ui
2022-07-01 13:39:43 -07:00
dependabot[bot]
c58a94d497 Bump zone.js from 0.11.5 to 0.11.6 in /src-ui
Bumps [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/packages/zone.js/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/zone.js-0.11.6/packages/zone.js)

---
updated-dependencies:
- dependency-name: zone.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:39:16 +00:00
dependabot[bot]
6a853d1fa2 Bump @angular/cli from 13.3.7 to 14.0.4 in /src-ui
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 13.3.7 to 14.0.4.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.3.7...14.0.4)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:38:38 +00:00
dependabot[bot]
c30c58e564 Bump ts-node from 10.8.0 to 10.8.1 in /src-ui
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.8.0 to 10.8.1.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.8.0...v10.8.1)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:38:22 +00:00
shamoon
3b7a4c6b6b Merge pull request #1175 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-environment-jsdom-28.1.2
Bump jest-environment-jsdom from 28.1.0 to 28.1.2 in /src-ui
2022-07-01 13:37:47 -07:00
shamoon
978cdf2514 Merge pull request #1183 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/node-18.0.0
Bump @types/node from 17.0.38 to 18.0.0 in /src-ui
2022-07-01 13:37:05 -07:00
dependabot[bot]
33609616aa Bump jest-environment-jsdom from 28.1.0 to 28.1.2 in /src-ui
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.0 to 28.1.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.2/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:36:20 +00:00
dependabot[bot]
006f6c998d Bump @types/node from 17.0.38 to 18.0.0 in /src-ui
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.38 to 18.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:36:05 +00:00
shamoon
05fd69eae4 Merge pull request #1181 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/concurrently-7.2.2
Bump concurrently from 7.2.1 to 7.2.2 in /src-ui
2022-07-01 13:35:12 -07:00
dependabot[bot]
b6b8719efa Bump concurrently from 7.2.1 to 7.2.2 in /src-ui
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 7.2.1 to 7.2.2.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v7.2.1...v7.2.2)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:33:25 +00:00
shamoon
7e8b9549a1 Merge pull request #1182 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-preset-angular-12.1.0
Bump jest-preset-angular from 12.0.1 to 12.1.0 in /src-ui
2022-07-01 13:32:00 -07:00
dependabot[bot]
032f78e0f5 Bump jest-preset-angular from 12.0.1 to 12.1.0 in /src-ui
Bumps [jest-preset-angular](https://github.com/thymikee/jest-preset-angular) from 12.0.1 to 12.1.0.
- [Release notes](https://github.com/thymikee/jest-preset-angular/releases)
- [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thymikee/jest-preset-angular/compare/v12.0.1...v12.1.0)

---
updated-dependencies:
- dependency-name: jest-preset-angular
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:30:30 +00:00
shamoon
4059bc9ec6 Merge pull request #1180 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-and-types/jest-28.1.2
Bump jest and @types/jest in /src-ui
2022-07-01 13:28:41 -07:00
dependabot[bot]
b85cd0925a Bump jest and @types/jest in /src-ui
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together.

Updates `jest` from 28.1.0 to 28.1.2
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.2/packages/jest)

Updates `@types/jest` from 27.5.2 to 28.1.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 20:13:50 +00:00
ziprandom
f20254217f POST_CONSUME_SCRIPT: add documents archive_path 2022-06-22 14:00:20 +00:00
ziprandom
9424b763ca POST_CONSUME_SCRIPT: add document dates to env 2022-06-22 13:58:16 +00:00
ziprandom
08ae3f8771 use env variables in pre-|post-consume scripts
+ instead of positional arguments because it's easier to use in the
shell script and easier to read in the python code.
2022-06-22 13:56:59 +00:00
Felix E
68f0cf419b Merge pull request #1148 from pReya/patch-1
fix: update scanner capability
2022-06-20 14:25:59 +02:00
Moritz Stückler
26b12512b1 fix: update scanner capability
The Brother ADS-A1700W does indeed support SFTP. I've just bought it, and set it up like this.
2022-06-20 12:06:54 +02:00
Michael Shamoon
b98afadd5c python tests for tasks api endpoints 2022-06-17 23:11:29 -04:00
Trenton Holmes
499bd552a1 Fine, I made my own GitHub API interface. With blackjack and ... 2022-06-17 08:11:15 -07:00
Trenton Holmes
0090e27699 Adds a new workflow to cleanup image tags which no longer have an associated branch 2022-06-16 09:20:58 -07:00
shamoon
e568b3000e Add lsio to issue form 2022-06-14 08:31:08 -07:00
Michael Shamoon
7ae8b46ea7 allow PaperlessTask.started null 2022-06-13 16:21:37 -07:00
Michael Shamoon
ffb903841b Prevent duplicate api calls on text filtering 2022-06-13 15:35:00 -07:00
shamoon
72ee904e67 Merge pull request #1127 from paperless-ngx/feature-webp-thumbnails
Feature: Change document thumbnails to WebP
2022-06-12 09:44:53 -07:00
Trenton Holmes
222e1968d8 Removes one last portion of PNG vs WebP 2022-06-12 09:12:02 -07:00
Trenton Holmes
1df517afd3 Removes last vestiges of PNG from the tests, code, docs and samples 2022-06-11 14:20:50 -07:00
Trenton Holmes
cc4cea1a41 Converts the conversion into a database migration 2022-06-11 13:04:21 -07:00
Trenton Holmes
e8868d7ebf Entirely removes the optipng, updates ghostscript fall back to also use WebP. Updates the conversion to use a multiprocessing pool 2022-06-11 08:38:49 -07:00
Trenton Holmes
7d9a9033f9 Fixes the re-generation of thumbnails making webp file, but named as PNG files 2022-06-10 13:17:41 -07:00
Trenton Holmes
87322d7732 Adds quick documentation of new functionality 2022-06-10 11:26:23 -07:00
Trenton Holmes
08c3d6e84b Fixes existing testing, adds test coverage of new command 2022-06-10 10:12:01 -07:00
Trenton Holmes
b50325c3a3 Minor tweak to determining content type 2022-06-10 08:57:36 -07:00
Trenton Holmes
12cdcf7681 Adds information system check for PNG thumbnail existence 2022-06-10 08:56:55 -07:00
Trenton Holmes
34192349be Corrects the functionality of the webp conversion script 2022-06-10 08:56:25 -07:00
Trenton Holmes
153d0bb12a Corrects the logic of thumbnail path to account for both getting existing path or building expected path 2022-06-10 07:59:22 -07:00
Trenton Holmes
20092dadad Adds untested manual conversion command 2022-06-10 07:17:15 -07:00
Trenton Holmes
6844f8f2bf Minor tweaks to getting the document thumbnail path. Adds text thumbnail as webp 2022-06-10 06:56:28 -07:00
Michael Shamoon
58f2c6a5fc webp thumbnail support with png fallback 2022-06-10 02:28:13 -07:00
Michael Shamoon
5f10d86f04 Quick toggle for tags / doctypes etc on doc view 2022-06-09 08:37:40 -07:00
Michael Shamoon
1120e823ed Update tasks e2e tests to cypress 10
and remove debug print
2022-06-08 19:57:34 -07:00
Michael Shamoon
301b384a02 Merge branch 'dev' into feature-frontend-task-queue 2022-06-08 19:44:23 -07:00
Trenton Holmes
e4a26164de Merge pull request #1014 from paperless-ngx/feature-own-django-q
Feature: Fork django-q to update dependencies
2022-06-08 18:57:30 -07:00
Trenton Holmes
56d3e8893f Manually downgrades reportlab, no 3.9 wheel was built yet 2022-06-08 17:04:00 -07:00
Trenton Holmes
99336908f0 Points to the organization fork of django-q, which now includes my replicated changes 2022-06-08 16:04:03 -07:00
Trenton Holmes
090325af35 Adds git as needed for a git link 2022-06-08 15:59:25 -07:00
Trenton Holmes
485be6c3fd Changes to the forked django-q 2022-06-08 15:59:20 -07:00
Trenton Holmes
faa9d36c34 Merge pull request #1118 from paperless-ngx/feature-simplify-library-image
Chore: Simplify building Python wheels
2022-06-08 15:21:51 -07:00
Trenton Holmes
ea8e108cdf Removes references to now not set or used build args 2022-06-08 13:33:17 -07:00
Trenton Holmes
100f5422f6 Updates the wheel builders to let pip handle finding the sdist of the required package and version 2022-06-08 13:33:17 -07:00
Trenton Holmes
15c716e53b Merge pull request #1116 from paperless-ngx/feature-bugfix-reportlab
Chore: Manually downgrade reportlab (and update everything else)
2022-06-08 13:32:51 -07:00
Trenton Holmes
75e77c5e54 Re-locks all dependencies and manually downgrades reportlab to 3.6.9 until piwheels issue is fixed 2022-06-08 12:04:30 -07:00
Trenton Holmes
de4fdc07e0 Merge pull request #1103 from paperless-ngx/dependabot/pip/dev/whitenoise-6.2.0
Bump whitenoise from 6.1.0 to 6.2.0
2022-06-08 07:41:56 -07:00
dependabot[bot]
51edb2fa14 Bump whitenoise from 6.1.0 to 6.2.0
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/evansd/whitenoise/releases)
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.1.0...6.2.0)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-06 20:24:26 +00:00
Michael Shamoon
bd995089a8 Use pre_execute signal to specify started vs queued 2022-06-06 01:39:45 -07:00
Michael Shamoon
a90dd2ad1e Update e2e tests for collapsible result 2022-06-05 14:16:15 -07:00
Michael Shamoon
cd44151e16 add collapsible task result output 2022-06-05 14:16:15 -07:00
Trenton Holmes
5715ba1a9a Merge pull request #1091 from adam-ah/dev
Longer (5 vs 0.2s) guard_cycle for Django-Q
2022-06-05 08:11:51 -07:00
shamoon
6f4a1c1751 Merge pull request #1092 from similicious/fix/web-manifest
Fix app name and icons web manifest, optimize svg
2022-06-04 06:27:15 -07:00
similicious
2a1b1eb1a4 Fix app name 2022-06-04 12:29:12 +02:00
Adam H
20c597b1d7 Longer (5 vs 0.2s) guard_cycle for Django-Q
To reduce average CPU load. Given paperless is mostly idling and when not, just spawns long-running operations (e.g., OCR), a 0.2s health-check of the Django-Q cluster is unnecessary. See also #1084
2022-06-04 10:12:53 +10:00
Trenton Holmes
9dc1989507 Merge pull request #1088 from paperless-ngx/bugfix-docker-folder-create
Bugfix: Don't assume default Docker folders
2022-06-03 15:26:32 -07:00
Trenton Holmes
681cb1b978 Makes sure the export folder also exists 2022-06-03 14:02:58 -07:00
Trenton Holmes
332a9fac5a Adds quotes around usages that may be of a user defined directory
Co-authored-by: Felix E <felix@eckhofer.com>
2022-06-03 11:21:13 -07:00
Trenton Holmes
d118f4a3f0 Setup the defined user folders instead of always using the defaults at Docker startup 2022-06-03 09:18:48 -07:00
similicious
7620cd02f0 Optimize svg files with svgo 2022-06-03 11:41:46 +02:00
similicious
fdfd7bd82a Fix: icons and app name in manifest 2022-06-03 10:50:33 +02:00
shamoon
01c17e10cc Merge pull request #1083 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-10.0.1
Bump cypress from 9.6.1 to 10.0.1 in /src-ui
2022-06-02 17:29:51 -07:00
Michael Shamoon
bed03b301b use global fixtures in e2e tests 2022-06-02 15:00:41 -07:00
Michael Shamoon
ef48762da5 Migrate to cypress 10 2022-06-02 14:47:09 -07:00
dependabot[bot]
7978f3f0e6 Bump cypress from 9.6.1 to 10.0.1 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 9.6.1 to 10.0.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v9.6.1...v10.0.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-02 21:36:01 +00:00
shamoon
8d5fad72bf Merge pull request #1076 from paperless-ngx/query-params-e2e-tests
Query params e2e tests
2022-06-02 14:33:14 -07:00
shamoon
04db521851 Merge pull request #1049 from paperless-ngx/bugfix-better-sanity-msgs
Bugfix: Better sanity check messages
2022-06-02 11:17:56 -07:00
shamoon
26d27be161 Merge pull request #1081 from paperless-ngx/fix-pdf-viewer-margins
Fix vertical margins between pages of pdf viewer
2022-06-02 11:17:02 -07:00
Michael Shamoon
1259d06302 Fix vertical margins between pages of pdf viewer 2022-06-02 11:03:54 -07:00
Trenton Holmes
4db3f366ef Merge pull request #1032 from pheerai/feature-mailActionCustomTag
Feature mail action custom tag
2022-06-02 09:46:34 -07:00
Trenton Holmes
1c52c5b673 Merge pull request #1065 from paperless-ngx/dependabot/github_actions/dev/docker/setup-qemu-action-2
Bump docker/setup-qemu-action from 1 to 2
2022-06-01 15:53:16 -07:00
dependabot[bot]
a6a885d4f4 Bump docker/setup-qemu-action from 1 to 2
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 1 to 2.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 22:25:39 +00:00
Trenton Holmes
b11066cef1 Merge pull request #1064 from paperless-ngx/dependabot/github_actions/dev/docker/setup-buildx-action-2
Bump docker/setup-buildx-action from 1 to 2
2022-06-01 15:25:18 -07:00
Trenton Holmes
1941b0c3ed Merge pull request #1063 from paperless-ngx/dependabot/github_actions/dev/docker/build-push-action-3
Bump docker/build-push-action from 2 to 3
2022-06-01 15:24:15 -07:00
shamoon
9a47fc747f Merge pull request #1075 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress/schematic-2.0.0 2022-06-01 14:53:12 -07:00
Trenton Holmes
a425d3a55b Merge pull request #1062 from paperless-ngx/dependabot/github_actions/dev/tj-actions/changed-files-22.1
Bump tj-actions/changed-files from 19 to 22.1
2022-06-01 14:25:11 -07:00
Michael Shamoon
f03a0f6e73 Add documents query params e2e tests 2022-06-01 14:12:38 -07:00
dependabot[bot]
74d5724092 Bump @cypress/schematic from 1.7.0 to 2.0.0 in /src-ui
Bumps [@cypress/schematic](https://github.com/cypress-io/cypress) from 1.7.0 to 2.0.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/@cypress/schematic-v1.7.0...@cypress/schematic-v2.0.0)

---
updated-dependencies:
- dependency-name: "@cypress/schematic"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 21:10:21 +00:00
shamoon
3df21fcaa3 Merge pull request #1073 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/concurrently-7.2.1
Bump concurrently from 7.1.0 to 7.2.1 in /src-ui
2022-06-01 14:09:19 -07:00
shamoon
fbb5de6740 Merge pull request #1074 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/jest-27.5.2
Bump @types/jest from 27.4.1 to 27.5.2 in /src-ui
2022-06-01 14:08:55 -07:00
dependabot[bot]
f7f9096c6e Bump concurrently from 7.1.0 to 7.2.1 in /src-ui
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 7.1.0 to 7.2.1.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v7.1.0...v7.2.1)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 21:07:51 +00:00
dependabot[bot]
d5a8e1725d Bump @types/jest from 27.4.1 to 27.5.2 in /src-ui
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 27.4.1 to 27.5.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 21:07:37 +00:00
shamoon
34413747d5 Merge pull request #1070 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ts-node-10.8.0
Bump ts-node from 10.7.0 to 10.8.0 in /src-ui
2022-06-01 14:06:48 -07:00
dependabot[bot]
18de626919 Bump ts-node from 10.7.0 to 10.8.0 in /src-ui
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.7.0 to 10.8.0.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.7.0...v10.8.0)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 21:05:51 +00:00
shamoon
bef192084f Merge pull request #1071 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-28.1.0
Bump jest from 28.0.3 to 28.1.0 in /src-ui
2022-06-01 14:04:47 -07:00
dependabot[bot]
54eef16bfb Bump jest from 28.0.3 to 28.1.0 in /src-ui
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.0.3 to 28.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.0/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 21:03:57 +00:00
shamoon
7be49dba69 Merge pull request #1069 from paperless-ngx/npm-updates-220601
Chore: npm package updates 22-06-01
2022-06-01 14:02:13 -07:00
Trenton Holmes
218a6af62a Merge pull request #1061 from paperless-ngx/dependabot/github_actions/dev/docker/login-action-2
Bump docker/login-action from 1 to 2
2022-06-01 14:00:14 -07:00
Michael Shamoon
f0315d5c70 bump packages for angular, popperjs, node, ngx-cookie-service 2022-06-01 13:50:17 -07:00
dependabot[bot]
f82e04201b Bump docker/setup-buildx-action from 1 to 2
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 1 to 2.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 20:17:31 +00:00
dependabot[bot]
f41231f017 Bump docker/build-push-action from 2 to 3
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 3.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 20:17:28 +00:00
dependabot[bot]
ae1fb76d13 Bump tj-actions/changed-files from 19 to 22.1
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 19 to 22.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v19...v22.1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 20:17:25 +00:00
dependabot[bot]
fa0023223f Bump docker/login-action from 1 to 2
Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 20:17:21 +00:00
Michael Shamoon
1c80fd17fd Reorganize e2e tests 2022-06-01 12:37:43 -07:00
Paperless-ngx Translation Bot [bot]
48cb347198 New Crowdin updates (#959)
* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Dutch)
[ci skip]

* New translations django.po (French)
[ci skip]

* New translations django.po (Romanian)
[ci skip]

* New translations django.po (Spanish)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations django.po (Czech)
[ci skip]

* New translations django.po (Greek)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations django.po (Hebrew)
[ci skip]

* New translations django.po (Italian)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations django.po (Portuguese)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations django.po (Slovak)
[ci skip]

* New translations django.po (Slovenian)
[ci skip]

* New translations django.po (Swedish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations django.po (Portuguese, Brazilian)
[ci skip]

* New translations django.po (Luxembourgish)
[ci skip]

* New translations django.po (Danish)
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations django.po (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]
2022-06-01 10:20:51 -07:00
shamoon
ffd583ed11 Merge pull request #1043 from slankes/qualify_dockerimages
Qualify images hosted by docker.io in compose files
2022-06-01 09:38:14 -07:00
Michael Shamoon
97bbca3aef fix merge conflict 2022-06-01 09:28:26 -07:00
shamoon
06fd92fd27 Merge pull request #1058 from paperless-ngx/bugfix-enable-django-q-debug
Bugfix: Pass debug setting on to django-q
2022-06-01 09:20:38 -07:00
Trenton Holmes
c0e05a7572 If debug mode is enabled, also pass this setting on to django-q 2022-06-01 08:59:20 -07:00
shamoon
2abe6eec84 Merge pull request #1057 from paperless-ngx/bugfix-document-str
Bugfix: Don't assume the document has a title set
2022-06-01 08:28:22 -07:00
Trenton Holmes
0b6e73840a Fixes formatting 2022-06-01 08:20:04 -07:00
Trenton Holmes
1707fe8990 Updates the Document str to account for a blank title instead of assuming title will be populated 2022-06-01 08:03:38 -07:00
Trenton Holmes
9335b0779c Update no content warning to be more clear it is missing OCR content
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2022-06-01 07:44:48 -07:00
Trenton Holmes
277b521fad Removes unused import 2022-06-01 07:43:46 -07:00
Trenton Holmes
af1b634d6d Updates to use pathlib instead of os.path 2022-05-31 08:42:11 -07:00
Sven Lankes
cc19008961 We want gotenberg 7.4 and not pin to 7.4.4 2022-05-31 09:48:01 +02:00
Trenton Holmes
be304e37b4 Refines the sanity check header, fixes other test issues 2022-05-30 18:21:24 -07:00
Trenton Holmes
0a34a4a7ad Makes the sanity check messages better for users 2022-05-30 17:03:33 -07:00
Oliver Rümpelein
898564c8d8 Add migration for new rule. 2022-05-29 15:22:50 +02:00
Oliver Rümpelein
708638b97f Merge remote-tracking branch 'upstream/dev' into feature-mailActionCustomTag 2022-05-29 13:51:54 +02:00
Sven Lankes
458e857956 use qualified hostnames for images stored on docker.io 2022-05-29 13:50:58 +02:00
Oliver Rümpelein
ac62bcb7ba Clear cache instead of working around it. 2022-05-27 22:51:32 +02:00
Michael Shamoon
6b1c50b051 Simple e2e test for Tasks component 2022-05-27 01:11:20 -07:00
Michael Shamoon
d4a5376f73 automatically refresh tasks on file socket messages too 2022-05-27 00:45:50 -07:00
Michael Shamoon
71b34aa3bd fix result on empty task 2022-05-27 00:45:50 -07:00
Michael Shamoon
6b4d8b18e0 show failed tasks badge in sidebar 2022-05-27 00:45:50 -07:00
Michael Shamoon
66b2013d23 tasks usability improvements 2022-05-27 00:45:50 -07:00
Michael Shamoon
dc86993c84 mobile improvements, fix dismiss 1 task 2022-05-26 22:15:56 -07:00
Michael Shamoon
00a5c13001 Update 1021_paperlesstask.py 2022-05-26 21:58:02 -07:00
Michael Shamoon
0e34923114 Revert "Merge branch 'feature-frontend-task-queue' of github.com:paperless-ngx/paperless-ngx into feature-frontend-task-queue"
This reverts commit 011164bc32, reversing
changes made to 0a43ce9ced.
2022-05-26 21:24:55 -07:00
Michael Shamoon
011164bc32 Merge branch 'feature-frontend-task-queue' of github.com:paperless-ngx/paperless-ngx into feature-frontend-task-queue 2022-05-26 21:24:45 -07:00
Michael Shamoon
0a43ce9ced fix merge 2022-05-26 21:21:29 -07:00
Michael Shamoon
d925fb38ce Basic tasks frontend view
Update app-frame.component.ts
2022-05-26 21:19:16 -07:00
Michael Shamoon
3dc617277f Task results popover
fix merge
2022-05-26 21:18:39 -07:00
Michael Shamoon
096af09fc4 Basic tasks frontend view
Update app-frame.component.ts
2022-05-26 21:09:11 -07:00
Michael Shamoon
f97f9b857b Task results popover 2022-05-26 21:09:08 -07:00
Michael Shamoon
5c0829b052 Better tasks api endpoint 2022-05-26 21:09:05 -07:00
Michael Shamoon
aa999b34e2 Update frontend for reworked tasks api endpoint 2022-05-26 21:09:05 -07:00
Michael Shamoon
0a06c291e2 acknowledge_tasks endpoint & basic UI
Update tasks.service.ts
2022-05-26 21:09:04 -07:00
Michael Shamoon
4bbaf5f89c update post_save signal receiver 2022-05-26 21:09:04 -07:00
Michael Shamoon
f88e070455 Toggle functionality for tasks list 2022-05-26 21:09:01 -07:00
Michael Shamoon
5c980c31be PaperlessTask and consumption_tasks endpoint 2022-05-26 21:05:24 -07:00
shamoon
9eee37bc68 Merge branch 'dev' into feature-created-date 2022-05-26 14:28:33 -07:00
Quinn Casey
a4927477fb Merge pull request #1008 from paperless-ngx/bugfix-max-pixel-setting
Bugfix: Corrects the setting of max pixel size for OCR
2022-05-26 09:12:24 -07:00
Quinn Casey
d0a6c6a2f3 Merge pull request #1007 from paperless-ngx/improve-date-paste-input
Feature: better date pasting
2022-05-26 08:50:08 -07:00
Quinn Casey
92757c5d8c Merge pull request #1017 from paperless-ngx/alphabetize-tags
Enhancement: Alphabetize tags by default
2022-05-26 08:42:55 -07:00
Oliver Rümpelein
0cc7765f2b Revert accidentally included changes. 2022-05-26 17:40:11 +02:00
Quinn Casey
ee1ef4ff56 Merge pull request #1000 from paperless-ngx/rework-query-params-logic
Fix: Rework query params logic
2022-05-26 08:18:43 -07:00
Quinn Casey
b5eed5e043 Merge pull request #1030 from paperless-ngx/feature-reload-language-change
Enhancement: show note on language change and offer reload
2022-05-26 08:12:43 -07:00
Oliver Rümpelein
62a253f571 Merge remote-tracking branch 'upstream/dev' into feature-mailActionCustomTag 2022-05-26 14:05:48 +02:00
Oliver Rümpelein
080a23dd8c Update docs. 2022-05-26 12:42:29 +02:00
Oliver Rümpelein
c90129957e Make test work. 2022-05-26 12:42:20 +02:00
Michael Shamoon
0fa717fe11 Show note on language change and offer reload 2022-05-25 16:06:59 -07:00
Michael Shamoon
e72766a5bf fix global overlay color 2022-05-25 14:47:05 -07:00
Oliver Rümpelein
104a684514 Revert all changes to tests, will need a more structured approach. 2022-05-25 20:47:43 +02:00
Oliver Rümpelein
5a809d7e31 Add first draft implementation, test broken. 2022-05-25 19:23:52 +02:00
tooomm
ce3f6837e9 Link issues, capitalization and minor fixes 2022-05-25 19:23:52 +02:00
tooomm
3ffd2a745b update heading levels for v1.7.0 2022-05-25 19:23:52 +02:00
shamoon
6b9c07b809 Merge pull request #1025 from paperless-ngx/fix-pytest-api-auth
Fix: use `force_authentication` instead of `force_login` for python api tests
2022-05-24 09:59:14 -07:00
Michael Shamoon
d4e2722586 use force_authenticate in api tests 2022-05-23 23:07:49 -07:00
shamoon
1343767295 Merge pull request #1013 from paperless-ngx/chore-manual-updates
Chore: Manually update dependencies
2022-05-23 20:32:23 -07:00
Michael Shamoon
4b4bfc052f Alphabetize tags by default 2022-05-23 20:25:26 -07:00
shamoon
f7539eb931 Merge pull request #1016 from paperless-ngx/more-redis-wait-info
Feature: Include error information when Redis connection fails
2022-05-23 19:12:49 -07:00
Trenton Holmes
efcfecca10 Also output the exception when the Redis ping fails 2022-05-23 16:53:48 -07:00
shamoon
6a3735822d Merge pull request #1009 from dragere/patch-2
Better handle long tags on small cards
2022-05-23 11:51:07 -07:00
Michael Shamoon
5bbcc7f2f7 Better handle long tag names 2022-05-23 11:24:13 -07:00
Michael Shamoon
400f1d37bf Revert "Allow line breaks in Tags"
This reverts commit 14cbcb4af6.
2022-05-23 11:24:08 -07:00
Trenton Holmes
985b774378 Reworks documentation on the max pixels setting 2022-05-23 10:54:41 -07:00
dragere
14cbcb4af6 Allow line breaks in Tags 2022-05-23 19:28:29 +02:00
Trenton Holmes
18ce86407d Manually updates dependencies 2022-05-23 09:31:31 -07:00
Michael Shamoon
d0ee203265 Update saved-view-widget.component.ts
[ci skip]
2022-05-23 01:54:21 -07:00
Trenton Holmes
fc26fe0ac0 Updates to provide the user provided max pixel size to ocrmypdf 2022-05-22 16:56:08 -07:00
Michael Shamoon
0e0cbe3517 Use NgbDateParserFormatter 2022-05-22 14:38:15 -07:00
Michael Shamoon
8e2cb6d416 Strip some characters from pasted date input 2022-05-22 09:03:26 -07:00
Michael Shamoon
73a6e68e03 Fix conflicting rule type 22 2022-05-21 00:22:36 -07:00
Michael Shamoon
48f9cb09af minor refactor query params utils 2022-05-21 00:22:36 -07:00
Michael Shamoon
1c83f489d1 Use 1/0 instead of true/false 2022-05-21 00:22:35 -07:00
Michael Shamoon
f6d78a0044 fix documents list without query params 2022-05-20 23:18:18 -07:00
Michael Shamoon
e60a7df9a2 Refactor query params service 2022-05-20 23:18:18 -07:00
Quinn Casey
feaf2da834 Merge pull request #995 from paperless-ngx/translate-more-tooltips
Fix: add translation for some un-translated tooltips
2022-05-20 06:05:41 -07:00
Michael Shamoon
bf8703deae Update messages.xlf 2022-05-19 23:54:23 -07:00
Michael Shamoon
1997b7b2d9 Mark various tooltips for translation 2022-05-19 23:50:57 -07:00
Quinn Casey
666b938550 Merge pull request #990 from tooomm/patch-2
Docs: Fix headings and add links to PRs in changelog
2022-05-19 17:23:23 -07:00
Michael Shamoon
4e8f546502 Update django.po 2022-05-19 15:24:43 -07:00
Michael Shamoon
5e9f3586cd Update messages.xlf 2022-05-19 15:22:13 -07:00
Markus
69ef26dab0 Feature: Dynamic document storage pathes (#916)
* Added devcontainer

* Add feature storage pathes

* Exclude tests and add versioning

* Check escaping

* Check escaping

* Check quoting

* Echo

* Escape

* Escape :

* Double escape \

* Escaping

* Remove if

* Escape colon

* Missing \

* Esacpe :

* Escape all

* test

* Remove sed

* Fix exclude

* Remove SED command

* Add LD_LIBRARY_PATH

* Adjusted to v1.7

* Updated test-cases

* Remove devcontainer

* Removed internal build-file

* Run pre-commit

* Corrected flak8 error

* Adjusted to v1.7

* Updated test-cases

* Corrected flak8 error

* Adjusted to new plural translations

* Small adjustments due to code-review backend

* Adjusted line-break

* Removed PAPERLESS prefix from settings variables

* Corrected style change due to search+replace

* First documentation draft

* Revert changes to Pipfile

* Add sphinx-autobuild with keep-outdated

* Revert merge error that results in wrong storage path is evaluated

* Adjust styles of generated files ...

* Adds additional testing to cover dynamic storage path functionality

* Remove unnecessary condition

* Add hint to edit storage path dialog

* Correct spelling of pathes to paths

* Minor documentation tweaks

* Minor typo

* improving wrapping of filter editor buttons with new storage path button

* Update .gitignore

* Fix select border radius in non input-groups

* Better storage path edit hint

* Add note to edit storage path dialog re document_renamer

* Add note to bulk edit storage path re document_renamer

* Rename FILTER_STORAGE_DIRECTORY to PATH

* Fix broken filter rule parsing

* Show default storage if unspecified

* Remove note re storage path on bulk edit

* Add basic validation of filename variables

Co-authored-by: Markus Kling <markus@markus-kling.net>
Co-authored-by: Trenton Holmes <holmes.trenton@gmail.com>
Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-05-19 14:42:25 -07:00
tooomm
163231d307 Link issues, capitalization and minor fixes 2022-05-19 23:12:40 +02:00
tooomm
e530750fc6 update heading levels for v1.7.0 2022-05-19 22:05:43 +02:00
Quinn Casey
c3997c9f26 Merge pull request #987 from paperless-ngx/canon-mfp-new-config
Docs: Add link to new config option in scanners.rst
2022-05-18 14:48:30 -07:00
Quinn Casey
6d7defa79e Merge pull request #986 from paperless-ngx/fix-npm-optional-flag
Change npm --no-optional to --omit=optional
2022-05-18 14:42:08 -07:00
Quinn Casey
bc232582df Add link to new config option 2022-05-18 14:30:33 -07:00
Quinn Casey
286affea38 Fix formatting 2022-05-18 14:30:16 -07:00
Quinn Casey
5f5c9e2eb3 Merge branch 'main' into dev 2022-05-18 14:26:36 -07:00
Quinn Casey
de5eaf1c2c Merge pull request #985 from paperless-ngx/fix-changelog-links
Fix links in changelog
2022-05-18 14:25:56 -07:00
Quinn Casey
6f3755684e Merge pull request #984 from eingemaischt/canon-maxify-mb5350
Added Maxify MB5350 Documentation
2022-05-18 14:25:18 -07:00
Quinn Casey
6950daca9a Link to configuration values for Canon MFP 2022-05-18 14:03:43 -07:00
Michael Shamoon
b4de83e348 Change npm --no-optional to --omit=optional 2022-05-18 14:01:19 -07:00
Quinn Casey
83a1a32a5e Fix formatting, typo 2022-05-18 13:53:03 -07:00
Michael Shamoon
3cea4804f8 Update .gitignore
[ci skip]
2022-05-18 13:52:31 -07:00
Michael Shamoon
8ce32003d7 Update changelog.md 2022-05-18 13:38:56 -07:00
Philipp
d3191490d9 Added Maxify MB5350 Documentation 2022-05-18 20:59:10 +02:00
Michael Shamoon
f6d5ba56b1 Update custom.css
[ci skip]
2022-05-18 11:41:36 -07:00
shamoon
998ca64c1e Merge pull request #919 from paperless-ngx/feature-settings-saved-to-db
Feature: frontend settings saved to database
2022-05-18 11:33:17 -07:00
shamoon
eaa33744a6 Merge pull request #982 from qcasey/changelog-to-md
Add `myst-parser` to fix readthedocs
2022-05-18 11:01:59 -07:00
Quinn Casey
c0a47ca999 Add myst-parser 2022-05-18 07:48:24 -07:00
Quinn Casey
22bfab840d Merge pull request #878 from dabenzel/patch-1
[documentation] added iOS Shortcut Link for Uploading PDF to paperless
2022-05-18 07:00:28 -07:00
Michael Shamoon
88b7f8ac1e Use zoneinfo instead of tz
Co-Authored-By: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
2022-05-18 03:25:02 -07:00
shamoon
6fbe4404f5 Update api.rst 2022-05-18 03:25:02 -07:00
Michael Shamoon
d5e340d0f6 Consolidate date adapter 2022-05-18 03:25:02 -07:00
Michael Shamoon
94954eeba3 created_date error display 2022-05-18 03:25:02 -07:00
Michael Shamoon
b2911b2eba use created_date in all of frontend 2022-05-18 03:25:02 -07:00
Michael Shamoon
c398f22e76 fix docs update endpoint 2022-05-18 03:25:02 -07:00
Michael Shamoon
063f6c1d5a only pass created_date from frontend 2022-05-18 03:25:02 -07:00
Michael Shamoon
2ca691d3b8 use created_date 2022-05-18 03:25:02 -07:00
shamoon
f2086b3a90 Update shortcut link 2022-05-18 03:19:41 -07:00
Philipp
bb15b744c8 Add "Created" as additional (optional) parameter for post_documents (#965)
* Added "created" as optional parameter for post_documents.

* Fixed Conflict

* After Black Reformatting

* Run "add-trailing-comma"

* The right order between black and trailing comma is important....

* Added required=False

* Adds unit test for optional created in document api POST

* Fixes adding of settings override

* And a mis-added print, sigh

Co-authored-by: Philipp <philipp@invalid.invalid>
Co-authored-by: Trenton Holmes <holmes.trenton@gmail.com>
2022-05-18 02:56:32 -07:00
shamoon
f1e99de59a Merge pull request #979 from paperless-ngx/fix-978
Fix: Title is changed after switching doc quickly
2022-05-18 02:55:24 -07:00
Michael Shamoon
e0999c7ba4 pull frontend lang setting from db if set 2022-05-18 02:41:15 -07:00
Michael Shamoon
89c5aac9ed tap ui settings get to avoid dup 2022-05-17 16:12:59 -07:00
Michael Shamoon
4a7c9a6050 Update settings e2e fixture 2022-05-17 11:14:21 -07:00
Michael Shamoon
e94ce3102e Correct translation string locations 2022-05-17 11:14:21 -07:00
Michael Shamoon
0225faddbb Add ui_settings to exporter 2022-05-17 11:13:58 -07:00
Trenton Holmes
fb10d3a5be Removes accidental printing left in testing 2022-05-17 11:13:58 -07:00
Trenton Holmes
0613e3ab12 Makes minor improvements to ui_settings API testing 2022-05-17 11:13:58 -07:00
Michael Shamoon
b21edde1bc Code suggestions
Co-Authored-By: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
2022-05-17 11:13:58 -07:00
Michael Shamoon
1953a8ecb7 Note JSON1 extension requirement on bare metal installs 2022-05-17 11:13:58 -07:00
Michael Shamoon
c84b592543 Update frontend strings 2022-05-17 11:13:58 -07:00
Michael Shamoon
53f905b88b basic python tests 2022-05-17 11:13:19 -07:00
Michael Shamoon
d057a5076c Remove post_save receiver 2022-05-17 11:13:19 -07:00
Michael Shamoon
bcb9c6ccb0 Properly get username & display name 2022-05-17 11:13:19 -07:00
Michael Shamoon
96f86adfb8 PaperlessUiSettings data object 2022-05-17 11:13:19 -07:00
Michael Shamoon
de89f75707 Refactor to UiSettings 2022-05-17 11:11:39 -07:00
Michael Shamoon
b2307d911e update e2e tests for settings initialization 2022-05-17 11:11:39 -07:00
Michael Shamoon
35a558ec01 include language in db settings 2022-05-17 11:11:39 -07:00
Michael Shamoon
2e97c0a5fb Automatic migration to database 2022-05-17 11:11:39 -07:00
Michael Shamoon
7d9575b7fd Use app initializer to wait on settings 2022-05-17 11:11:38 -07:00
Michael Shamoon
321e0ced2a fix key constraint error 2022-05-17 11:11:38 -07:00
Michael Shamoon
a697eb8530 Basic frontend settings retrieval 2022-05-17 11:11:38 -07:00
Michael Shamoon
4b37c1963b skeleton frontend_settings api endpoint 2022-05-17 11:11:38 -07:00
Michael Shamoon
8f2687e390 frontend settings db migration 2022-05-17 11:11:38 -07:00
Michael Shamoon
c0f799a807 Update settings.service.ts 2022-05-17 11:11:38 -07:00
shamoon
abc5bd98b4 Merge pull request #956 from paperless-ngx/fix-warn-max-open-docs
Fix: warn when closing a document with unsaved changes due to max open docs
2022-05-17 10:43:10 -07:00
Michael Shamoon
a51893c849 Manually dirty check title on doc change 2022-05-17 10:36:43 -07:00
Michael Shamoon
79e218d00a Fix title subscription fires even after doc change 2022-05-17 09:59:14 -07:00
Trenton Holmes
9ae20a6bec Merge pull request #953 from paperless-ngx/bugfix-intoify-debounce
Bugfix: Adds configurable intoify debounce time
2022-05-17 09:25:29 -07:00
Michael Shamoon
2f739ff0b3 close button color with light primary only for toasts 2022-05-17 09:09:38 -07:00
Trenton Holmes
e0a8f4df0d Adds troubleshooting and missing documentation for inotify and polling configuration 2022-05-17 08:56:52 -07:00
shamoon
347d7c07ef Merge pull request #942 from paperless-ngx/bugfix-date-format
Bugfix: Fixes document filename date off by 1 issue
2022-05-16 21:47:56 -07:00
shamoon
42e3cf821b Merge pull request #943 from paperless-ngx/feature-seperate-library-workflow
Feature:  Move installer library images to new workflow
2022-05-16 21:46:35 -07:00
shamoon
574f1be067 Merge pull request #973 from paperless-ngx/feature-chore-deps-update
Chore: Manually update all Python dependencies
2022-05-16 17:25:28 -07:00
Trenton Holmes
cbde0e0286 Manually updates dependency files 2022-05-16 16:05:40 -07:00
benzel
11012c6be1 Update docs/scanners.rst
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-05-16 21:44:34 +02:00
shamoon
432bd83188 Merge pull request #962 from paperless-ngx/add-MIME-pdf-check
fixes #949: change to MIME detection for files
2022-05-16 10:40:43 -07:00
Florian Brandes
f8adfa9873 fixes #949: change to MIME detection for files
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-05-16 17:29:29 +02:00
Michael Shamoon
1efd226f75 let OpenDocumentsService handle nav 2022-05-15 23:44:29 -07:00
Michael Shamoon
ba1bb95935 Update messages.xlf 2022-05-15 23:44:28 -07:00
Michael Shamoon
f5e740f2ec Warn on closing edited doc due to max open docs 2022-05-15 22:55:25 -07:00
benzel
98be7b227f Update scanners.rst 2022-05-15 21:10:03 +02:00
Trenton Holmes
f07cfd4f51 Adds configuration variable to the inotify debounce timing 2022-05-15 11:48:12 -07:00
Trenton Holmes
029d81122b Makes the workflow triggers more specific 2022-05-15 11:25:14 -07:00
shamoon
26eb7ecdb5 Merge pull request #948 from Berjou/docs-typo
docs: fix some typos
2022-05-14 16:00:32 -07:00
Maxime Joubert
3cf3ea4e20 docs: fix some typos 2022-05-15 00:52:37 +02:00
shamoon
84a2937d31 Merge pull request #946 from tooomm/patch-1
[Docs] Fix 2 small typos
2022-05-14 09:11:04 -07:00
Trenton Holmes
1d1f3bde96 Moves the asserts to be closer together 2022-05-14 08:20:55 -07:00
tooomm
329d81ec64 wording 2022-05-14 17:05:52 +02:00
tooomm
c725f50f07 one more 2022-05-14 15:50:38 +02:00
tooomm
463560c929 small typos 2022-05-14 15:45:03 +02:00
Paperless-ngx Translation Bot [bot]
c7412deb77 New Crowdin updates (#911)
* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
2022-05-13 20:34:51 -07:00
Michael Shamoon
9ed6c78466 Update date.ts
[ci skip]
2022-05-13 11:52:05 -07:00
shamoon
9a1bd9637c Merge pull request #935 from qcasey/changelog-to-md
Convert Changelog to markdown, auto-commit future changelogs
2022-05-13 09:29:07 -07:00
Trenton Holmes
87fd18bee1 Seperates out the library image building into a new, minimal workflow 2022-05-13 09:21:26 -07:00
Trenton Holmes
f3dced3199 Fixes Document public filename so it will use the local date instead of UTC date 2022-05-13 09:10:36 -07:00
shamoon
b36989e8e4 Merge pull request #941 from tooomm/patch-1
[Readme] Fix typo
2022-05-13 08:38:45 -07:00
tooomm
95c45b90a8 fix typo 2022-05-13 17:31:02 +02:00
Michael Shamoon
0bdc132dcf Update messages.xlf
[ci skip]
2022-05-13 08:30:41 -07:00
Quinn Casey
e450391d9b Add links to usernames and PR #s
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-05-13 07:46:49 -07:00
Quinn Casey
38f4bf4e28 Merge pull request #939 from paperless-ngx/fix-management-pages-plurals
Fix: management pages plurals incorrect in other languages
2022-05-13 07:45:41 -07:00
Quinn Casey
109b0ea78b Merge pull request #933 from paperless-ngx/1.7.1-frontend-css-tweaks
Fix: v1.7.1 frontend visual fixes
2022-05-13 07:44:28 -07:00
Michael Shamoon
5061feb7bc Update messages.xlf 2022-05-12 20:39:04 -07:00
Michael Shamoon
52480e0bc4 Use explicit plural strings on management pages 2022-05-12 20:34:32 -07:00
Michael Shamoon
109dd45b56 Update messages.xlf
[ci skip]
2022-05-12 20:32:17 -07:00
Michael Shamoon
c8da513d97 Hide text on large cards on tiny screens 2022-05-12 20:22:40 -07:00
Quinn Casey
06e7e40b15 Use checkout in action 2022-05-12 15:36:46 -07:00
Quinn Casey
f3d6fcb52b Merge pull request #920 from paperless-ngx/frontend-asn-empty
Feature: allow all ASN filtering functions
2022-05-12 10:28:10 -07:00
Quinn Casey
2decae6586 Merge pull request #930 from paperless-ngx/fix-unassigned-filtering-query-params
Fix: unassigned query params ignored
2022-05-12 09:53:00 -07:00
Quinn Casey
6766041328 Add myst_parser for sphinx, changelog to md 2022-05-12 09:15:55 -07:00
Quinn Casey
2d96cec464 Convert changelog to md 2022-05-12 09:13:32 -07:00
Quinn Casey
843d229c3d Append generated changelog to docs 2022-05-12 09:13:21 -07:00
Michael Shamoon
3d5bcd9d75 Visible bg & text color changes on ng-select 2022-05-11 23:20:21 -07:00
Michael Shamoon
b391dd6a3f Improve mobile filter editor layout with long languages 2022-05-11 23:20:21 -07:00
Quinn Casey
c126cf2bc1 Merge pull request #924 from vlcty/enable-ipv6
gunicorn: Allow IPv6 sockets
2022-05-11 16:04:06 -07:00
Michael Shamoon
fcb5beb617 Fix unassigned query params ignored 2022-05-11 15:15:06 -07:00
Michael Shamoon
dad141726c Fix disabled input bg color 2022-05-11 14:44:02 -07:00
Michael Shamoon
48637188a7 Handle all ASN filtering rules 2022-05-11 14:44:02 -07:00
Quinn Casey
5d063e8449 Merge pull request #925 from paperless-ngx/chore-remote-version-tests
Chore: Add testing for remote version checking
2022-05-11 14:16:46 -07:00
Trenton Holmes
2b8a03e93c Adds unit testing for remote version getting 2022-05-11 12:59:38 -07:00
Josef 'veloc1ty' Stautner
213665cea2 gunicorn: Allow ipv6 sockets 2022-05-11 21:00:00 +02:00
shamoon
d230431227 Merge pull request #923 from paperless-ngx/fix-queryparams-comma-splitting
Fix: allow commas in non-multi rules query params
2022-05-11 11:15:39 -07:00
Michael Shamoon
2040c9fe41 allow commas in non-multi rules query params 2022-05-11 10:26:17 -07:00
shamoon
b49821a9f4 Merge pull request #921 from lippoliv/fix-update-notice-typo
fix duplicate v in update notification popup
2022-05-10 23:33:12 -07:00
Oliver Lippert
1701b0afed fix typo in update notification popup
seems like appRemoteVersion.version brings it's own "v"
2022-05-11 08:26:24 +02:00
Michael Shamoon
7785431152 ASN 'is null' from frontend 2022-05-10 21:51:29 -07:00
shamoon
b325233b2d Merge pull request #883 from paperless-ngx/feature-version-export-import
Fix: Include version in export for better error messages
2022-05-10 19:49:46 -07:00
Quinn Casey
3baf29a6b7 Use currently... importing... instead of "vs" 2022-05-10 17:41:09 -07:00
shamoon
2510216f21 Merge pull request #899 from paperless-ngx/feature-dashboard-loading-indicators
Feature: initial app loading indicators
2022-05-10 17:01:37 -07:00
Quinn Casey
e4d7ae9718 Merge pull request #905 from paperless-ngx/qol-changes
Chore: Minor improvements for quality of life
2022-05-10 17:01:01 -07:00
Michael Shamoon
596fabda5d Update environment.prod.ts 2022-05-10 16:48:59 -07:00
Michael Shamoon
e95f34ae13 Merge branch 'main' into dev 2022-05-10 16:47:31 -07:00
shamoon
169cb9424f Merge pull request #903 from paperless-ngx/bugfix-superuser-command
Bugfix: Superuser Management Won't Reset Password
2022-05-10 16:46:14 -07:00
shamoon
536576518e Merge pull request #721 from paperless-ngx/bug-fix-date-ignore
Fix Ignore Date Parsing
2022-05-10 16:45:58 -07:00
Quinn Casey
b034e972b0 Merge pull request #902 from paperless-ngx/v1.7.1
v1.7.1
2022-05-10 16:11:12 -07:00
Quinn Casey
1bf36b6461 Merge pull request #918 from paperless-ngx/manual-dep-updates
Chore: Manually update Python dependencies
2022-05-10 16:10:23 -07:00
Trenton Holmes
58ab269d3d Manually re-locks dependencies 2022-05-10 11:20:00 -07:00
Trenton Holmes
7cbb73be7a Minor improvements for quality of life 2022-05-09 12:05:29 -07:00
Paperless-ngx Translation Bot [bot]
cdbf81c51c New Crowdin updates (#816)
* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Swedish)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Hebrew)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations messages.xlf (Greek)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Czech)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Arabic, Saudi Arabia)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (German)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-05-09 11:29:26 -07:00
Trenton Holmes
cc54368658 Removes unused imports from test case 2022-05-09 09:49:11 -07:00
Quinn Casey
d81e4dbe99 Bump version 2022-05-09 09:48:48 -07:00
Trenton Holmes
4fd075aafa Updates the superuser management command to better handle existing super users 2022-05-09 09:38:17 -07:00
Trenton Holmes
a789649d97 Merge pull request #890 from paperless-ngx/feature-pyupgrade
(chore) Runs pyupgrade to Python 3.8+
2022-05-09 08:08:54 -07:00
Trenton Holmes
1817d014ef Fixes missing f on an f-string 2022-05-08 16:57:35 -07:00
Trenton Holmes
8f1f0f5475 Further updates documentation to note a date sep string is needed 2022-05-08 16:57:35 -07:00
Trenton Holmes
b406a2430d Updates the documentation for ignoring dates 2022-05-08 16:57:35 -07:00
Trenton Holmes
431edb0e67 Updates the documentation for ignore dates 2022-05-08 16:57:35 -07:00
Trenton Holmes
5b96944940 Updates the ignore date parsing to utilize the settings defined date order, instead of guessing a bit 2022-05-08 16:57:35 -07:00
Trenton Holmes
8a6aaf4e2d Adds additional testing for both date parsing and consumed document created date 2022-05-08 16:57:35 -07:00
Michael Shamoon
b30c4275ef dashboard loading indicator, remove duplicate call to saved views 2022-05-08 14:17:11 -07:00
Michael Shamoon
7f7ec625c8 loading indicators for sidebar saved views 2022-05-08 14:16:37 -07:00
Michael Shamoon
010f1f2bd1 loading indicator for dashboard widgets 2022-05-08 09:12:29 -07:00
Michael Shamoon
ce32089cc4 fix back button double history bug 2022-05-07 00:08:34 -07:00
shamoon
f0ee2e14fb Merge pull request #888 from paperless-ngx/feature-docker-improvements
Feature: Dockerfile Organization & Enhancements
2022-05-06 14:45:54 -07:00
Quinn Casey
9b8a490061 Merge pull request #881 from paperless-ngx/feature-fix-saved-view-query-params
Feature / fix saved view & sort field query params
2022-05-06 12:45:22 -07:00
benzel
f4e8ab27fa Update docs/scanners.rst
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-05-06 20:48:06 +02:00
Michael Shamoon
4da49c8d59 Ensure retain all params when loading saved views 2022-05-06 11:27:18 -07:00
Trenton Holmes
3960093231 Organizes the Dockerfile from top to bottom in order of least changing. Uses RUN bind mounts to avoid copies of the installer being included in the final image 2022-05-06 10:27:18 -07:00
Trenton Holmes
3003bdd507 Runs pyupgrade to Python 3.8+ and adds a hook for it 2022-05-06 09:04:08 -07:00
Quinn Casey
7909b30b4b Merge pull request #853 from lippoliv/bugfix-document_exporter-document-dates-are-off-by-one-day-#267
Bugfix document exporter document dates are off by one day #267
2022-05-05 09:59:11 -07:00
Trenton Holmes
915382f2c7 Adds documentation note about version matching 2022-05-05 09:23:15 -07:00
Quinn Casey
905a34188d Merge pull request #882 from paperless-ngx/bugfix-q-cluster-setting
Fix: Minor update to Q Cluster Configuration
2022-05-05 09:22:17 -07:00
Trenton Holmes
c907d690b7 Improves the output to the user 2022-05-05 09:17:51 -07:00
Michael Shamoon
261cab8450 support sort fields & some refactoring 2022-05-05 08:36:18 -07:00
Quinn Casey
7c2137fcda Merge pull request #873 from paperless-ngx/feature-mobile-friendlier-manage-pages
Feature: mobile friendlier manage pages
2022-05-05 07:41:09 -07:00
Trenton Holmes
2c3cb7f516 Adds stopasgroup to the qcluster run command, as recommended by the documentation 2022-05-05 07:37:53 -07:00
Trenton Holmes
dd4d903f69 Uses the correct styling for output messages 2022-05-05 07:30:02 -07:00
Trenton Holmes
a823b8f70c Includes a version.json file with the current version in export. On import, catch certain errors and check the version if possible 2022-05-05 07:30:02 -07:00
Quinn Casey
3d7aa7a4b9 Merge pull request #880 from paperless-ngx/feature-improve-healthcheck
Add timeout to healthcheck
2022-05-05 06:23:10 -07:00
Michael Shamoon
3e8bff03e7 Refactor query param handling to service 2022-05-05 00:23:06 -07:00
Michael Shamoon
584082a1df Add query params for saved views 2022-05-04 22:31:09 -07:00
Michael Shamoon
49644ce18a Add timeout to healthcheck 2022-05-04 18:58:58 -07:00
Trenton Holmes
7432ef9e19 Accounts for Python 3.8 backported zoneinfo 2022-05-04 15:13:17 -07:00
benzel
ca40e39da4 I have created a shortcut to Upload PDF files
//
2022-05-04 22:22:39 +02:00
Michael Shamoon
7e271129c7 fix management test failing due to hidden button 2022-05-03 13:14:19 -07:00
Michael Shamoon
b5f95a351c ng extract-i18n 2022-05-03 13:04:28 -07:00
Michael Shamoon
5e10befe28 Mobile friendly management tables 2022-05-03 13:00:42 -07:00
Quinn Casey
98ebb095cc Merge pull request #851 from paperless-ngx/feature-semver-tags
Feature: Use semver for release process
2022-05-03 06:30:11 -07:00
Oliver Lippert
c3b5b47b22 use zoneinfo instead of pytz
Signed-off-by: Oliver Lippert <info@trusty.codes>

#267
2022-05-03 08:08:28 +02:00
Trenton Holmes
3c133c36bd Merge pull request #830 from paperless-ngx/dependabot/github_actions/dev/tj-actions/changed-files-19
Bump tj-actions/changed-files from 18.7 to 19
2022-05-02 16:13:58 -07:00
dependabot[bot]
9ceb2e6084 Bump tj-actions/changed-files from 18.7 to 19
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.7 to 19.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v18.7...v19)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 23:00:56 +00:00
Quinn Casey
2b322b638e Merge pull request #866 from paperless-ngx/feature-arm-tika-consolidate
Deployment: Consolidate tika compose files
2022-05-02 15:56:02 -07:00
phail
0d298d743a Add log messages for mail errors (#727)
* adapt to starttls interface change in imap_tools
pin imap-tools version to avoid breaking changes
improve mail log

* fix unittest

* remove uneeded print and fix merge fail

* bump to next version
2022-05-02 15:54:51 -07:00
shamoon
ec5d80585d Merge pull request #869 from paperless-ngx/feature-update-deps
Chore: Update dependency lock file
2022-05-02 15:44:38 -07:00
Trenton Holmes
88e71e12b1 Manually updates dependencies 2022-05-02 15:11:45 -07:00
Quinn Casey
63bb72caab Merge pull request #867 from paperless-ngx/dependabot/pip/dev/asgiref-3.5.1
Bump asgiref from 3.5.0 to 3.5.1
2022-05-02 14:27:40 -07:00
dependabot[bot]
240c7913e9 Bump asgiref from 3.5.0 to 3.5.1
Bumps [asgiref](https://github.com/django/asgiref) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/django/asgiref/releases)
- [Changelog](https://github.com/django/asgiref/blob/main/CHANGELOG.txt)
- [Commits](https://github.com/django/asgiref/compare/3.5.0...3.5.1)

---
updated-dependencies:
- dependency-name: asgiref
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 20:38:20 +00:00
Quinn Casey
582629a996 Chore: Improve Bug Report template (#859)
* Try to get architecture in BR

* Move screenshots to Description

* Add link to search

* Specify doc page

* Clarify bug report intro

* Add missing period

* Other missing periods for consistiency

* Add line breaks, architecture req

* Expand Currently...

* Removing trailing quote
2022-05-02 11:35:06 -07:00
Quinn Casey
939dd17910 Update Gotenberg to 7.4 2022-05-02 09:16:42 -07:00
Quinn Casey
d58b1a7de7 Update Tika documentation 2022-05-02 09:02:29 -07:00
Quinn Casey
a938895e5e Use our arm compatible tika container 2022-05-02 08:23:04 -07:00
Quinn Casey
9d9111e4d8 Merge pull request #864 from paperless-ngx/fix-863
Always accept yyyy-mm-dd date inputs
2022-05-02 08:10:49 -07:00
shamoon
79dbfce36f Merge pull request #860 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-28.0.3
Bump jest from 27.5.1 to 28.0.3 in /src-ui and related packages
2022-05-02 01:29:43 -07:00
shamoon
e7f162e5e5 setup-jest compatibility with v28 2022-05-02 01:24:24 -07:00
shamoon
f23d10f000 Add jest-environment-jsdom, update jest-preset-angular 2022-05-02 01:24:24 -07:00
dependabot[bot]
67dd86988b Bump jest from 27.5.1 to 28.0.3 in /src-ui
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 27.5.1 to 28.0.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.0.3/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 01:21:57 -07:00
Michael Shamoon
e16ab324f4 Always accept yyyy-mm-dd date inputs 2022-05-01 21:38:04 -07:00
Quinn Casey
317926f379 Merge pull request #849 from paperless-ngx/feature-fix-image-local-build
Fix local Docker image building
2022-05-01 16:02:56 -07:00
Quinn Casey
fe61ca2c97 Merge pull request #862 from paperless-ngx/fix-date-input-errors
Fix: show errors on invalid date input
2022-05-01 15:48:32 -07:00
Michael Shamoon
2940686fba show errors on invalid date input 2022-05-01 14:07:31 -07:00
Trenton Holmes
2ef2a561ef Fixes beta or rcs from updating the latest Docker tag 2022-05-01 13:58:24 -07:00
shamoon
7ae31def4f Merge pull request #852 from paperless-ngx/fix-818
Fix: Older dates do not display on frontend
2022-05-01 13:36:55 -07:00
shamoon
8f038d7d26 Merge pull request #861 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ng-bootstrap/ng-bootstrap-12.1.1
Bump @ng-bootstrap/ng-bootstrap from 12.1.0 to 12.1.1 in /src-ui
2022-05-01 13:36:33 -07:00
Trenton Holmes
b9a2652013 Fixing up more locations of the old tag naming style 2022-05-01 13:21:10 -07:00
Trenton Holmes
dce4166bc8 First changes for using semver everywhere 2022-05-01 13:21:10 -07:00
dependabot[bot]
3c5f509bc7 Bump @ng-bootstrap/ng-bootstrap from 12.1.0 to 12.1.1 in /src-ui
Bumps [@ng-bootstrap/ng-bootstrap](https://github.com/ng-bootstrap/ng-bootstrap) from 12.1.0 to 12.1.1.
- [Release notes](https://github.com/ng-bootstrap/ng-bootstrap/releases)
- [Changelog](https://github.com/ng-bootstrap/ng-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ng-bootstrap/ng-bootstrap/compare/12.1.0...12.1.1)

---
updated-dependencies:
- dependency-name: "@ng-bootstrap/ng-bootstrap"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 20:07:08 +00:00
Oliver Lippert
182cea3385 always use datetime.date.isoformat to generate filename
fixes #267

Signed-off-by: Oliver Lippert <info@trusty.codes>
2022-05-01 08:54:41 +02:00
Oliver Lippert
0ba1ba55bd add test for filename expectation with modified timezone
Signed-off-by: Oliver Lippert <info@trusty.codes>

#267
2022-05-01 08:41:38 +02:00
Michael Shamoon
45440eec1d handle very old date strings 2022-04-30 22:01:04 -07:00
Trenton Holmes
49fad14920 Updates the Dockerfile to facilitate local image builds, adds documentation for how to build, adds registry caching for final image too 2022-04-30 10:33:09 -07:00
Quinn Casey
0f1e31643d Merge pull request #725 from paperless-ngx/bugfix-imap-utf8-login
Fixes IMAP UTF8 Authenication
2022-04-29 10:31:38 -07:00
Quinn Casey
c17c291b1c Merge pull request #840 from paperless-ngx/fix-password-field-remains-visible
Fix password field remains visible
2022-04-29 07:08:51 -07:00
Michael Shamoon
666641f990 reset password field visibility 2022-04-28 21:07:25 -07:00
Michael Shamoon
268f99f8ac Bump angular to 13.3.5, builders to 13.3.4, types/node to 17.0.30
Supersedes #831, #832, #838, #839
2022-04-28 20:34:35 -07:00
shamoon
216f048466 Merge pull request #833 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/types/node-17.0.29
Bump @types/node from 17.0.27 to 17.0.29 in /src-ui
2022-04-28 20:11:12 -07:00
shamoon
ed8d5f1a80 Merge pull request #834 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ng-bootstrap/ng-bootstrap-12.1.0
Bump @ng-bootstrap/ng-bootstrap from 12.0.2 to 12.1.0 in /src-ui
2022-04-28 20:10:24 -07:00
dependabot[bot]
27a1ef25a5 Bump @ng-bootstrap/ng-bootstrap from 12.0.2 to 12.1.0 in /src-ui
Bumps [@ng-bootstrap/ng-bootstrap](https://github.com/ng-bootstrap/ng-bootstrap) from 12.0.2 to 12.1.0.
- [Release notes](https://github.com/ng-bootstrap/ng-bootstrap/releases)
- [Changelog](https://github.com/ng-bootstrap/ng-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ng-bootstrap/ng-bootstrap/compare/12.0.2...12.1.0)

---
updated-dependencies:
- dependency-name: "@ng-bootstrap/ng-bootstrap"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 21:27:25 +00:00
dependabot[bot]
ecbc8165d5 Bump @types/node from 17.0.27 to 17.0.29 in /src-ui
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.27 to 17.0.29.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 21:27:05 +00:00
shamoon
128594584e Merge pull request #829 from paperless-ngx/fix-missing-labels-dep
Fix `dependabot.yml` config
2022-04-28 14:25:13 -07:00
Quinn Casey
8b798013c1 Merge pull request #828 from paperless-ngx/feature-docker-hub-push
Enable Docker Hub push
2022-04-28 13:40:55 -07:00
Quinn Casey
8c19c2c2e9 Fix comment directory 2022-04-28 12:52:20 -07:00
Quinn Casey
6f0fee4c43 Assign GHA bumps to CI/CD team 2022-04-28 12:51:43 -07:00
Quinn Casey
a5b4a7caad Add back review groups 2022-04-28 12:49:44 -07:00
Quinn Casey
c1b9db19c6 Add back labels removed in 30834e 2022-04-28 12:47:37 -07:00
Trenton Holmes
40f88faf37 Updates the workflow to enable Docker Hub pushing 2022-04-28 12:18:25 -07:00
Trenton Holmes
81e6228ab3 Merge pull request #806 from paperless-ngx/dependabot/pip/dev/pytest-7.1.2
Bump pytest from 7.1.1 to 7.1.2
2022-04-28 07:28:15 -07:00
dependabot[bot]
157951343b Bump pytest from 7.1.1 to 7.1.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.1...7.1.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 13:33:34 +00:00
Quinn Casey
9325eff6fc Merge pull request #815 from paperless-ngx/feature-fix-pillow-libs
Fixes Pillow build for armv7
2022-04-27 20:27:12 -07:00
Quinn Casey
8c8f366e0f Merge pull request #766 from paperless-ngx/feature-barcode-tiff-support
Feature barcode tiff support
2022-04-27 19:46:16 -07:00
Trenton Holmes
542221a38d Merge pull request #792 from paperless-ngx/dependabot/github_actions/github/codeql-action-2
Bump github/codeql-action from 1 to 2
2022-04-27 19:33:25 -07:00
dependabot[bot]
aa7faaaa72 Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-28 01:10:48 +00:00
Trenton Holmes
c96db31006 Merge pull request #821 from aruhier/pr_docker
docker: set default postgresql port back to 5432
2022-04-27 18:09:07 -07:00
Anthony Ruhier
c66de5931c docker: set default postgresql port back to 5432
Postgresql default port in the docker prepare script has been changed by
mistake to 5342 in commit c2c8a2754. Set it back to 5432.
2022-04-28 02:04:19 +02:00
Trenton Holmes
fdec13ef81 Updates the Pillow link to a better anchor 2022-04-27 15:48:19 -07:00
Trenton Holmes
9aee44f363 Adds extra system libraries for pikepdf/Pillow building 2022-04-27 15:48:19 -07:00
Trenton Holmes
2caa2d5b32 Merge pull request #820 from paperless-ngx/feature-rebuild-inter-images
Updates GHA workflow to rebuild intermediate images on changes
2022-04-27 15:47:32 -07:00
Trenton Holmes
66c7f44bea Changes the intermediate image building steps to use registry caching, allowig us to always rebuild them, but do so very quickly when nothing has changed 2022-04-27 11:28:55 -07:00
Quinn Casey
99e4a79cb8 Merge pull request #814 from paperless-ngx/update-i18n
Update frontend localization source file
2022-04-26 15:27:14 -07:00
Michael Shamoon
f7f0df60ec Update messages.xlf 2022-04-26 14:46:37 -07:00
Quinn Casey
e012262301 Merge pull request #813 from paperless-ngx/remove-expected-behavior
Remove expected behavior section
2022-04-26 14:21:33 -07:00
Quinn Casey
5676155e4e Remove expected behavior section 2022-04-26 11:15:26 -07:00
Quinn Casey
d98bfa5bed Merge pull request #777 from paperless-ngx/bugfix-install-ocr-settings
Fix install script extra OCR languages format
2022-04-26 11:12:19 -07:00
Quinn Casey
7ccac8053b Merge pull request #788 from paperless-ngx/feature-wait-for-redis
Adds simple Python to wait for Redis broker to be ready
2022-04-26 11:10:01 -07:00
Quinn Casey
40cf46fe7d Merge pull request #758 from paperless-ngx/dependabot/pip/dev/imap-tools-0.54.0
Bump imap-tools from 0.53.0 to 0.54.0
2022-04-26 10:46:32 -07:00
Trenton Holmes
f5c05e1283 Fixes newly added mail tests to account for model change 2022-04-26 10:03:41 -07:00
Trenton Holmes
330e47f0b7 Adds some logging so we know which login method has failed 2022-04-26 09:41:36 -07:00
Trenton Holmes
1e9378b429 Implements a fallback to AUTH=PLAIN in the event of a UnicodeEncodeError during a normal login 2022-04-26 09:41:36 -07:00
Trenton Holmes
af58fb5fa3 Empty, dummy commit because GHA? 2022-04-26 09:41:08 -07:00
Trenton Holmes
3d6fb2383a Updates install script to split + seperated OCR languages to spaces for installation script 2022-04-26 09:41:08 -07:00
Trenton Holmes
2407798d2e Adds simple Python to wait for Redis broker to be ready (with minor Dockerfile improvements) 2022-04-26 08:46:03 -07:00
Trenton Holmes
f9194bd28c Merge pull request #761 from paperless-ngx/feature-build-all-images
Update GHA workflow to build all Docker images
2022-04-26 08:31:13 -07:00
Trenton Holmes
816f020cc3 Fixes tests with imap-tools 0.54.0 changes to the EmailAddress class 2022-04-26 08:11:25 -07:00
dependabot[bot]
9191aa32df Bump imap-tools from 0.53.0 to 0.54.0
Bumps [imap-tools](https://github.com/ikvk/imap_tools) from 0.53.0 to 0.54.0.
- [Release notes](https://github.com/ikvk/imap_tools/releases)
- [Changelog](https://github.com/ikvk/imap_tools/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/ikvk/imap_tools/compare/v0.53.0...v0.54.0)

---
updated-dependencies:
- dependency-name: imap-tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 13:30:32 +00:00
Trenton Holmes
0a6395507e Merge pull request #757 from paperless-ngx/dependabot/pip/dev/ocrmypdf-13.4.3
Bump ocrmypdf from 13.4.2 to 13.4.3
2022-04-25 17:25:41 -07:00
shamoon
eff68c601c Merge pull request #804 from paperless-ngx/dependabot-gha-target-dev
Updates the target branch for GHA updates to be dev
2022-04-25 16:29:50 -07:00
dependabot[bot]
3f5540f35b Bump ocrmypdf from 13.4.2 to 13.4.3
Bumps [ocrmypdf](https://github.com/jbarlow83/ocrmypdf) from 13.4.2 to 13.4.3.
- [Release notes](https://github.com/jbarlow83/ocrmypdf/releases)
- [Changelog](https://github.com/ocrmypdf/OCRmyPDF/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/jbarlow83/ocrmypdf/compare/v13.4.2...v13.4.3)

---
updated-dependencies:
- dependency-name: ocrmypdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 23:26:26 +00:00
Trenton Holmes
e5f5030e9c Updates the target branch for GHA updates to be dev 2022-04-25 15:27:15 -07:00
Trenton Holmes
df39d37ca9 Merge pull request #756 from paperless-ngx/dependabot/pip/dev/importlib-resources-5.7.1
Bump importlib-resources from 5.6.0 to 5.7.1
2022-04-25 14:19:49 -07:00
dependabot[bot]
bea81d0449 Bump importlib-resources from 5.6.0 to 5.7.1
Bumps [importlib-resources](https://github.com/python/importlib_resources) from 5.6.0 to 5.7.1.
- [Release notes](https://github.com/python/importlib_resources/releases)
- [Changelog](https://github.com/python/importlib_resources/blob/main/CHANGES.rst)
- [Commits](https://github.com/python/importlib_resources/compare/v5.6.0...v5.7.1)

---
updated-dependencies:
- dependency-name: importlib-resources
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 20:54:20 +00:00
Trenton Holmes
d261845fc6 Merge pull request #692 from paperless-ngx/dependabot/pip/dev/tox-3.25.0
Bump tox from 3.24.5 to 3.25.0
2022-04-25 13:49:42 -07:00
dependabot[bot]
eac0b295d2 Bump tox from 3.24.5 to 3.25.0
Bumps [tox](https://github.com/tox-dev/tox) from 3.24.5 to 3.25.0.
- [Release notes](https://github.com/tox-dev/tox/releases)
- [Changelog](https://github.com/tox-dev/tox/blob/master/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/tox/compare/3.24.5...3.25.0)

---
updated-dependencies:
- dependency-name: tox
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 19:19:35 +00:00
shamoon
f4eefcea13 Merge pull request #800 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/cypress-9.6.0
Bump cypress from 9.5.3 to 9.6.0 in /src-ui
2022-04-25 12:18:54 -07:00
dependabot[bot]
268715711f Bump cypress from 9.5.3 to 9.6.0 in /src-ui
Bumps [cypress](https://github.com/cypress-io/cypress) from 9.5.3 to 9.6.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v9.5.3...v9.6.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 19:14:24 +00:00
shamoon
c5f70b4401 Merge pull request #799 from paperless-ngx/bump-angular-250422
Bump angular & tools to 13.3.4 or 13.3.3
2022-04-25 12:12:50 -07:00
Michael Shamoon
912caf84a6 Bump angular & tools to 13.3.4 or 13.3.3 2022-04-25 12:09:54 -07:00
shamoon
448fa4d35f Merge pull request #797 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/concurrently-7.1.0
Bump concurrently from 7.0.0 to 7.1.0 in /src-ui
2022-04-25 12:08:48 -07:00
Trenton Holmes
cd8d4c357d Fixes the merge issues 2022-04-25 11:39:05 -07:00
Trenton Holmes
bdcc6f861d Converts tabs to spaces and update EditorConfig for the new files 2022-04-25 11:32:55 -07:00
Trenton Holmes
d9d6b7b151 Updates the utlity build script to actually support all the images 2022-04-25 11:32:55 -07:00
Trenton Holmes
4517692c20 Updates the utility script to allow building of other Dockerfiles for building any image locally. Adds a single point to configure non-Python versions 2022-04-25 11:32:55 -07:00
Trenton Holmes
609b9e3369 Adds utility script for building the Docker image locally 2022-04-25 11:32:54 -07:00
Trenton Holmes
be8ca110f4 Fixes spelling 2022-04-25 11:32:54 -07:00
Trenton Holmes
f1da37dd12 Minor fixes for local building 2022-04-25 11:32:53 -07:00
Trenton Holmes
ecca51dbdd Ports over the improvements to the frontend compilation from other PR 2022-04-25 11:32:53 -07:00
Trenton Holmes
d19015579c Instead of using a full image name, use the repo and version to build the image to pull from. Removes building of the frontend for multiple platforms 2022-04-25 11:32:53 -07:00
Trenton Holmes
6179ca5668 Fixes final WORKDIR directive 2022-04-25 11:32:52 -07:00
Trenton Holmes
6c70db31bd Incorporates the base image building back into the main repo with multi stage building 2022-04-25 11:32:52 -07:00
shamoon
b0790d7010 Merge pull request #798 from paperless-ngx/hotfix-mail-tests
Fix Backend Mail Tests
2022-04-25 11:29:31 -07:00
Trenton Holmes
eb8158673f Fixes backend testing of mail on dev 2022-04-25 11:10:32 -07:00
Michael Shamoon
409f17980f Update environment.prod.ts 2022-04-25 10:34:20 -07:00
Michael Shamoon
654ef06682 Merge branch 'main' into dev 2022-04-25 10:33:40 -07:00
dependabot[bot]
bca95a4972 Bump concurrently from 7.0.0 to 7.1.0 in /src-ui
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v7.0.0...v7.1.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 17:27:16 +00:00
Michael Shamoon
4df065d8d5 v1.7.0 2022-04-25 10:26:49 -07:00
shamoon
a358477cda Merge pull request #695 from paperless-ngx/beta
[Beta] Paperless-ngx v1.7.0 Release Candidate 1
2022-04-25 10:24:27 -07:00
shamoon
44d6db8c47 Merge pull request #772 from paperless-ngx/fix-dark-mode-delay-btn-progress
Fix dark mode delay button progress bar not visible
2022-04-22 08:15:30 -07:00
Quinn Casey
49e627d2fd Merge pull request #785 from paperless-ngx/fix-docs-darkmode-toggle
Fix docs dark mode toggle blocks menu button
2022-04-22 07:24:28 -07:00
shamoon
c3a8d93eb4 fix docs dark mode toggle blocks menu button 2022-04-22 01:00:19 -07:00
Paperless-ngx Translation Bot [bot]
7a648c6465 New Crowdin updates (#781)
* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]
2022-04-21 20:33:16 -07:00
Quinn Casey
5c1c5b5b0d Merge pull request #782 from paperless-ngx/add-python-3-10
Adds Python 3.10 to the backend test matrix
2022-04-21 11:13:50 -07:00
Trenton Holmes
811da4bac5 Adds Python 3.10 to the backend test matrix 2022-04-21 10:28:13 -07:00
Michael Shamoon
23b2fbef45 Fix dark mode delay button progress bar not visible 2022-04-19 19:25:24 -07:00
shamoon
f1b52b495a Merge pull request #769 from chrpme/fix/preview-link
Open preview link in new browser tab
2022-04-19 17:49:55 -07:00
Quinn Casey
0bff3891bd Merge pull request #767 from paperless-ngx/bug-fix-list-folders
List Email Account Folders In Event of Error Changing Folder
2022-04-19 15:57:31 -07:00
Florian Brandes
a7b1658ee1 code review changes
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-20 00:55:45 +02:00
Trenton Holmes
c274bbcddf Tweaks documentation around mail fetching sub-folders 2022-04-19 15:35:45 -07:00
Trenton Holmes
57f32e5360 Includes exception information during exception listing folders
Co-authored-by: Florian <florian.brandes@posteo.de>
2022-04-19 13:40:04 -07:00
Mike Unke
b4ecf8e28e Open preview link in new browser tab 2022-04-19 21:47:49 +02:00
Trenton Holmes
06cfba8c7e Updates the documentation 2022-04-19 09:05:30 -07:00
Trenton Holmes
5603834282 Only output the folder names 2022-04-19 09:03:08 -07:00
Trenton Holmes
33134d4529 In the event of an error when setting the mail account folder, attempt to list the account's folders to the log 2022-04-19 08:32:34 -07:00
Florian Brandes
bf57b6e4a2 more improvements to tiff support
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-19 13:08:40 +02:00
Paperless-ngx Translation Bot [bot]
b63f87a5b5 New translations messages.xlf (French) (#764)
[ci skip]
2022-04-18 19:48:23 -07:00
shamoon
68e3612d36 Merge pull request #765 from p-h-a-i-l/fix-mail-action-mixup
fix Mail actions mixup
2022-04-18 16:23:34 -07:00
phail
616a826b8a fix Mail actions mixup 2022-04-19 00:59:57 +02:00
shamoon
09d62d76b2 Merge pull request #745 from paperless-ngx/1.7.0-rc1-css-fixes-1
Beta 1.7.0 rc1 CSS Fixes #1
2022-04-18 12:02:14 -07:00
Quinn Casey
deab7794d6 Merge pull request #751 from paperless-ngx/feature-ci-concurrency
Adds workflow level concurrency group
2022-04-17 17:17:28 -07:00
Trenton Holmes
bc892059a1 Adds workflow level concurrency group with cancelling of in progress jobs to the CI 2022-04-17 15:29:50 -07:00
Florian Brandes
6d0fdc7510 add tests
fix indention
add more documentation

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-17 16:10:53 +02:00
Michael Shamoon
dd1d4b86d2 use var in input check / radio svgs 2022-04-17 00:49:34 -07:00
Michael Shamoon
65eeea9453 toasts should respect close button coloring 2022-04-17 00:48:57 -07:00
Michael Shamoon
b2b202586c fix settings mobile display bugs 2022-04-17 00:36:47 -07:00
Michael Shamoon
49341260dc fix popover carats 2022-04-17 00:25:39 -07:00
Michael Shamoon
dfcef81001 fix dark mode progress showing in light mode 2022-04-17 00:25:28 -07:00
Michael Shamoon
a834a6c874 remove single-use css vars 2022-04-17 00:25:10 -07:00
Florian Brandes
ad5188a280 add TIFF barcode support
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-16 21:59:03 +02:00
Paperless-ngx Translation Bot [bot]
53c2a0c724 New translations messages.xlf (Serbian (Latin)) (#735)
[ci skip]
2022-04-16 00:39:08 -07:00
Michael Shamoon
3a8cc31f1b fix some css specificity issues, unused vars 2022-04-16 00:23:15 -07:00
Quinn Casey
0f6b452d17 Merge pull request #737 from paperless-ngx/add-missing-packages-to-doc
add barcode packages to setup.rst
2022-04-15 06:32:47 -07:00
Florian Brandes
e994bcf737 add barcode packages to setup.rst
fixes #730

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-15 08:32:53 +02:00
Michael Shamoon
5432700b0d Add note for malformed package-lock in 1.6.0 2022-04-13 20:43:42 -07:00
Paperless-ngx Translation Bot [bot]
7b7534c952 New Crowdin updates (#699)
* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Danish)
[ci skip]
2022-04-13 20:33:15 -07:00
shamoon
b4570545ef Merge pull request #717 from paperless-ngx/fix-custom-theme-color-contrast
Fix custom theme color contrast
2022-04-13 13:31:24 -07:00
Michael Shamoon
6478db13e6 miscellaneous css fixes / reorganization 2022-04-13 13:30:02 -07:00
Michael Shamoon
1d7ddcc10d Remove unneeded imports since change to css vars 2022-04-13 08:43:35 -07:00
shamoon
30508c6c2c Merge pull request #702 from paperless-ngx/stalebot-unconfirmed
Chore: Only stale unconfirmed issues
2022-04-13 08:35:31 -07:00
Quinn Casey
18f43c5757 Merge pull request #722 from paperless-ngx/fix-gotenberg
Fix: use correct gotenberg image for sqlite-tika.arm.yml
2022-04-13 08:34:40 -07:00
shamoon
52498efd14 Merge pull request #723 from paperless-ngx/bugfix-remove-tag-match
Fix docker/metadata-action creation of latest tag
2022-04-13 08:28:44 -07:00
Trenton Holmes
40cb721d16 Removes the matching regex from the docker/metadata-action as it will create a new :latest even for release candidates 2022-04-13 08:20:30 -07:00
Michael Shamoon
1c2699b16e Refactor contrast to use luminance function 2022-04-13 08:18:10 -07:00
Michael Shamoon
d98a016087 Initial build of primary color contrast 2022-04-13 08:18:09 -07:00
Quinn Casey
bc5b6db031 Fix gotenberg image 2022-04-13 08:16:35 -07:00
Quinn Casey
4a4f252ad8 Merge branch 'main' into beta 2022-04-13 08:13:32 -07:00
Quinn Casey
c81dd1a478 Merge pull request #720 from alumpe/docs-typo-fixes
Corrects some spelling mistakes in docs
2022-04-13 07:11:36 -07:00
Adrian Lumpe
31016156be corrects some spelling mistakes in docs 2022-04-13 15:39:49 +02:00
shamoon
dad352f05e Update changelog.rst
[ci skip]
2022-04-13 03:14:43 -07:00
shamoon
95e94618d8 Merge pull request #270 from jonasc/dev
Allow setting more than one tag in mail rules
2022-04-13 03:11:38 -07:00
shamoon
045a401cd7 Merge pull request #705 from paperless-ngx/fix-startls
bugfix for imap using starttls
2022-04-12 18:51:46 -07:00
Quinn Casey
d5d7e2edbc Merge pull request #715 from paperless-ngx/nginx-proxy-config-variable
Add required PAPERLESS_URL to nginx proxy docs
2022-04-12 15:17:22 -07:00
Quinn Casey
64e1a6ec7e Merge pull request #713 from paperless-ngx/fix-1.7.0-rc1-tags-input-color
Fix: v1.7.0-rc1 Tags input should use body color
2022-04-12 15:11:05 -07:00
Quinn Casey
2221b425ad Add required PAPERLESS_URL to nginx proxy docs 2022-04-12 15:06:32 -07:00
Michael Shamoon
86b2ccae94 Tags input should use body color 2022-04-12 14:45:47 -07:00
shamoon
0bd67a54ab Merge pull request #704 from paperless-ngx/breaking-changes-changelog
Chore: Add Breaking Changes to release notes
2022-04-12 10:19:15 -07:00
Quinn Casey
306f254218 Add Breaking Changes 2022-04-12 07:37:49 -07:00
Quinn Casey
449add88a6 Bump header level 2022-04-12 07:37:02 -07:00
Quinn Casey
941ba8d689 Only stale unconfirmed issues 2022-04-12 07:31:14 -07:00
shamoon
813335f8eb Update changelog.rst
[ci skip]
2022-04-12 07:30:16 -07:00
shamoon
f0cef2f42f Update changelog.rst
[ci skip]
2022-04-12 07:29:07 -07:00
shamoon
e767eb38f4 Merge pull request #700 from paperless-ngx/fix-healthcheck
add "localhost" to ALLOWED_HOSTS
2022-04-12 07:25:09 -07:00
Florian Brandes
71cbef4c13 fixes #697
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-12 15:54:18 +02:00
jonasc
834ad1ef84 reformat migration with black 2022-04-12 15:06:38 +02:00
Florian Brandes
753e6661bc add "localhost" to ALLOWED_HOSTS
if PAPERLESS_URL is set and ALLOWED_HOSTS is NOT set

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-12 14:39:08 +02:00
jonasc
1ce19f5444 merge migrations 2022-04-12 10:51:19 +02:00
jonasc
0de1230a1a Reset related_name (was set to prevent duplicate) 2022-04-12 10:45:56 +02:00
jonasc
5ff304324d Add backwards data migration
The documents.tests.test_migration_mime_type test suite failes if no
backwards migration is provided. This simple backwards migration sets
the old assign_tag field with a tag if exactly one is set in
assign_tags.
2022-04-12 10:45:56 +02:00
jonasc
37f7ef41f2 Save MailRule and MailAccount objects in tests
This fixes the errors in the tests that the new many-to-many
assign_tags property cannot be accessed due to MailRule not having an
id. In one case it it necessary to give additional names to both objects
as several are created.
2022-04-12 10:45:52 +02:00
jonasc
4022284059 Allow setting more than one tag in mail rules
The three migrations do the following to preserve existing data in
assign_tag:
1. Add the new many-to-many field assign_tags.
2. Copy existing data from the assign_tag field to the assign_tags.
3. Delete the existing assign_tag field.
2022-04-12 10:41:08 +02:00
shamoon
dde6a2eb7d Merge branch 'main' into beta 2022-04-11 23:37:21 -07:00
Michael Shamoon
1083ed4e40 Update .pre-commit-config.yaml
[ci skip]
2022-04-11 23:32:37 -07:00
Michael Shamoon
c111825b1e Minor merge conflicts
[ci skip]
2022-04-11 23:31:20 -07:00
Michael Shamoon
e36c22d29a Update changelog.rst
[ci skip]
2022-04-11 23:05:16 -07:00
Michael Shamoon
c192931015 Update changelog.rst
[ci skip]
2022-04-11 22:58:08 -07:00
Michael Shamoon
ae895a4aec Create release-drafter.yml
[ci skip]
2022-04-11 22:05:55 -07:00
Michael Shamoon
301ad7e07d v1.7.0-rc1 2022-04-11 21:03:02 -07:00
Trenton Holmes
cc93616019 Merge pull request #691 from paperless-ngx/dependabot/pip/dev/django-4.0.4
Bump django from 4.0.3 to 4.0.4
2022-04-11 16:04:44 -07:00
Michael Shamoon
493d9875d4 tiny docs css fix
[ci skip]
2022-04-11 14:14:15 -07:00
shamoon
3fb8d05f0d Merge pull request #684 from paperless-ngx/docs-dark-mode
Documentation dark mode
2022-04-11 14:10:23 -07:00
dependabot[bot]
88066563d3 Bump django from 4.0.3 to 4.0.4
Bumps [django](https://github.com/django/django) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/django/django/releases)
- [Commits](https://github.com/django/django/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 20:37:09 +00:00
shamoon
9e3590352c Merge pull request #690 from paperless-ngx/fix-scanners-table
Fix: scanners table
2022-04-11 12:56:45 -07:00
Quinn Casey
86ad52639f Fix name 2022-04-11 12:34:37 -07:00
Quinn Casey
c00be946a5 Remove explicit "no" as was done in f303a1c 2022-04-11 12:32:32 -07:00
Quinn Casey
322aeeb552 Add 994d502 2022-04-11 12:23:27 -07:00
Quinn Casey
501d4cafa9 Add f303a1c 2022-04-11 12:21:52 -07:00
Quinn Casey
e556fb3e3a Add f2f7b71 2022-04-11 12:17:44 -07:00
Quinn Casey
bb930297d6 Reset table to b318c0a 2022-04-11 12:12:01 -07:00
shamoon
83f10167e5 Merge pull request #483 from stumpylog/check-if-file-busy
Adds wait for file before consuming
2022-04-11 11:56:05 -07:00
Quinn Casey
d47bb21389 Merge pull request #654 from paperless-ngx/fix-doc-detail-time
Fix: frontend document editing erases time data
2022-04-11 11:54:24 -07:00
Florian
4dedff00b8 Merge pull request #532 from paperless-ngx/feature-barcode-splitter
Feature barcode splitter
2022-04-11 08:51:48 +02:00
Trenton Holmes
2414dad656 Adds additional checking for both inotify and polling around document still being busy before consuming it 2022-04-10 12:21:34 -07:00
shamoon
8f98cb4860 Merge pull request #550 from stumpylog/feature-mail-consume-improve-docs
Feature mail consume improve docs
2022-04-10 08:46:45 -07:00
shamoon
6e96b7e00a Merge pull request #612 from stumpylog/bug-fix-filter-len
Increase length of SavedViewFilterRule
2022-04-10 08:46:25 -07:00
Michael Shamoon
04acce4916 dark mode toggle, css vars 2022-04-09 22:10:03 -07:00
Michael Shamoon
1b7a304149 initial docs dark mode css 2022-04-08 22:49:45 -07:00
shamoon
00287b27ab Merge pull request #680 from paperless-ngx/bug-fix-fnmatch
[bug] - Fixes attachment filename matching during mail fetching
2022-04-08 13:59:22 -07:00
Trenton Holmes
8f18b7fd6c Fixes the matching of attachment files names to patterns 2022-04-08 13:42:42 -07:00
Felix E
dde7771dc6 Merge pull request #674 from paperless-ngx/feature-django4-csrf
Add `PAPERLESS_URL` env variable & CSRF var
2022-04-08 21:00:57 +02:00
Quinn Casey
4165184e42 Chore: Implement release-drafter action for Changelogs (#669)
* Add inital release-drafter config

* Replace release action

* Add collapse-after 3 to dependencies
2022-04-08 11:12:19 -07:00
shamoon
f3c8211ba4 Merge pull request #672 from paperless-ngx/update-screenshots 2022-04-08 10:25:51 -07:00
Michael Shamoon
e4953a756a docs for PAPERLESS_URL + PAPERLESS_CSRF_TRUSTED_ORIGINS 2022-04-08 09:59:59 -07:00
Trenton Holmes
471ac63a3a Increases SavedViewFilterRule value to the maximum length 2022-04-08 08:55:58 -07:00
Trenton Holmes
f358eda5c5 Updates the mail db model to use the built-in enum capabilities and runs the migrations 2022-04-08 08:55:40 -07:00
Trenton Holmes
035130ecdc Updates the folder input text and adds docs note for how to figure out the folder separator value 2022-04-08 08:55:40 -07:00
Michael Shamoon
908fc8573a Merge dev changes to PULL_REQUEST_TEMPLATE.md
[ci skip]
2022-04-08 00:41:55 -07:00
Michael Shamoon
ca0e86757b add PAPERLESS_URL env variable for CSRF 2022-04-08 00:27:53 -07:00
Michael Shamoon
d4153607c9 reorganizing scss for clarity
[ci skip]
2022-04-07 23:23:28 -07:00
Michael Shamoon
99d0a0845d fix scss organization
[ci skip]
2022-04-07 23:15:27 -07:00
Florian Brandes
5fae5a9ee0 fix conditional in separate_pages
add additional test for separate_pages

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-08 08:09:48 +02:00
Michael Shamoon
b5a75be1db fix error case
[ci skip]
2022-04-07 23:06:46 -07:00
Michael Shamoon
93ad5433e4 Updated screenshots 2022-04-07 15:28:54 -07:00
Trenton Holmes
eb5e0e0b9b Merge pull request #501 from stumpylog/configure-worker-retry
Adds settings for worker retry time
2022-04-07 15:24:53 -07:00
Michael Shamoon
5ead8de0bb Add global drag-n-drop note
[ci skip]
2022-04-07 15:21:49 -07:00
Trenton Holmes
dc90f58391 Merge pull request #641 from paperless-ngx/dependabot/pip/dev/pre-commit-2.18.1
Bump pre-commit from 2.17.0 to 2.18.1
2022-04-07 14:29:08 -07:00
Michael Shamoon
ca43c71cf5 fix some broken css vars 2022-04-07 14:27:49 -07:00
dependabot[bot]
931a311c48 Bump pre-commit from 2.17.0 to 2.18.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.17.0 to 2.18.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.17.0...v2.18.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 20:54:33 +00:00
Michael Shamoon
9f9d7da1ce minor css hover + focus state fixes
[ci skip]
2022-04-07 13:51:36 -07:00
Trenton Holmes
d00e8d3b0f Merge pull request #649 from paperless-ngx/dependabot/pip/dev/zipp-3.8.0
Bump zipp from 3.7.0 to 3.8.0
2022-04-07 13:49:50 -07:00
Trenton Holmes
d4124bae0c Merge pull request #653 from paperless-ngx/dependabot/pip/dev/tqdm-4.64.0
Bump tqdm from 4.63.1 to 4.64.0
2022-04-07 13:37:46 -07:00
Michael Shamoon
c062eb751e another tiny doc style fix
[ci skip]
2022-04-07 12:47:48 -07:00
Michael Shamoon
e273a594ba tiny doc style fixes for rtd tools
[ci skip]
2022-04-07 12:44:08 -07:00
shamoon
ebb724e687 Merge pull request #652 from paperless-ngx/documentation-style
Documentation style
2022-04-07 12:35:06 -07:00
shamoon
58eb2d6f63 Merge pull request #283 from paperless-ngx/feature-global-dragdrop
Feature: global drag'n'drop
2022-04-07 12:14:59 -07:00
Michael Shamoon
b14bf8a96d prettier docs 2022-04-07 11:38:48 -07:00
Quinn Casey
01987f1b51 Merge pull request #667 from paperless-ngx/codeowners
Feature: Add CODEOWNERS
2022-04-07 08:31:48 -07:00
shamoon
0a35358e8d Merge pull request #666 from paperless-ngx/feature-update-base-image 2022-04-07 08:30:59 -07:00
Quinn Casey
5bacb85c33 Fix typo 2022-04-07 08:13:25 -07:00
Quinn Casey
6933ac523f Remove explicit team tagging from PR template 2022-04-07 08:13:12 -07:00
Quinn Casey
ba9120b417 Add CODEOWNERS 2022-04-07 08:12:05 -07:00
dependabot[bot]
3e71f5810f Bump tqdm from 4.63.1 to 4.64.0
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.63.1 to 4.64.0.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.63.1...v4.64.0)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 15:02:57 +00:00
Trenton Holmes
296a0edae4 Updates the base image tag to use the :dev tag from the base image dev branch 2022-04-07 08:00:22 -07:00
Florian Brandes
cdf5602dfb update documentation
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
e214f719c9 add more tests
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
08fbcf5158 use imported List
fail test if non-existing dir exists

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
10ca515ac5 addes tests:
- barcode-39
- barcode-128
- qr barcodes
- test for consumption

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
e59a14852b code formatting
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
c696b4f2f2 set barcode reader default to disabled
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
553153ba92 put code under CONSUMER_ENABLE_BARCODES
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
9d2bcf807e add more type hinting
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
422ac9befe decode bytecode in string
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
793f641af6 make list checks consistent
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
0ea5f5d584 use append method for lists
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
c024b846c3 add config options and documentation
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
37b3fde4e1 pre-commit hooks
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
e89ef5de25 renaming of documents to align with front end
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
06cac44d02 update ci.yml to include new dependency
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
488fe28ad3 flake8
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
50f474ae92 run black
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
78ca2ffaba add trailing commas
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
florian on nixos (Florian Brandes)
911f5bc78e reorder imports
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:29 +02:00
Florian Brandes
b227427916 add split logic to consume_file
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-07 11:14:17 +02:00
florian on nixos (Florian Brandes)
b5f77fd6e7 skip test if dir exists
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-06 21:16:41 +02:00
florian on nixos (Florian Brandes)
4fe966f534 more work on barcode
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-06 21:16:41 +02:00
florian on nixos (Florian Brandes)
bcce0838dd working split pages
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-06 21:16:41 +02:00
florian on nixos (Florian Brandes)
76e43bcb89 add first tests for barcode reader
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-06 21:16:41 +02:00
florian on nixos (Florian Brandes)
c666be32f4 add barcode packages
Signed-off-by: florian on nixos (Florian Brandes) <florian.brandes@posteo.de>
2022-04-06 21:16:41 +02:00
Trenton Holmes
2d850795d8 Merge pull request #642 from paperless-ngx/dependabot/pip/dev/ocrmypdf-13.4.2
Bump ocrmypdf from 13.4.1 to 13.4.2
2022-04-06 12:13:03 -07:00
Michael Shamoon
784982718e retain document time / tz in detail form 2022-04-05 22:11:09 -07:00
shamoon
2f8d263c9c Merge pull request #630 from paperless-ngx/fix-disableable-download-buttons
Fix: download buttons should disable while waiting
2022-04-05 19:44:43 -07:00
dependabot[bot]
b214163af3 Bump ocrmypdf from 13.4.1 to 13.4.2
Bumps [ocrmypdf](https://github.com/jbarlow83/ocrmypdf) from 13.4.1 to 13.4.2.
- [Release notes](https://github.com/jbarlow83/ocrmypdf/releases)
- [Changelog](https://github.com/ocrmypdf/OCRmyPDF/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/jbarlow83/ocrmypdf/compare/v13.4.1...v13.4.2)

---
updated-dependencies:
- dependency-name: ocrmypdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-06 02:04:09 +00:00
dependabot[bot]
a4fe1000c2 Bump zipp from 3.7.0 to 3.8.0
Bumps [zipp](https://github.com/jaraco/zipp) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/CHANGES.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.7.0...v3.8.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-06 02:03:28 +00:00
Trenton Holmes
9a275fa4ed Merge pull request #619 from paperless-ngx/dependabot/pip/dev/pillow-9.1.0
Bump pillow from 9.0.1 to 9.1.0
2022-04-05 18:57:52 -07:00
Michael Shamoon
f2c83f51de Cleanup file upload susbcriptions 2022-04-05 13:33:24 -07:00
Michael Shamoon
fb76b72787 Delete upload-documents.service.spec.ts 2022-04-05 13:33:24 -07:00
Michael Shamoon
bec6c4511c Cleaner activation with Angular directives 2022-04-05 13:33:24 -07:00
Michael Shamoon
77b9988d05 Refactor uploads to service, working global dd 2022-04-05 13:33:24 -07:00
Michael Shamoon
3e49f93816 100vh body height, fix filter editor horizontal overflow 2022-04-05 13:33:24 -07:00
Michael Shamoon
32f6932faf fix overlay background color in dark mode 2022-04-05 13:16:13 -07:00
Michael Shamoon
db76e1d65f code formatting 2022-04-05 13:16:13 -07:00
Michael Shamoon
0136ba504b Delete upload-documents.service.spec.ts 2022-04-05 13:16:13 -07:00
Michael Shamoon
459e026f16 Add translation directive for upload message 2022-04-05 13:16:13 -07:00
Michael Shamoon
b03a723c3e Fix dark mode alert close button 2022-04-05 13:16:13 -07:00
Michael Shamoon
7562636151 Cleaner activation with Angular directives 2022-04-05 13:16:13 -07:00
Michael Shamoon
3acc65ca0d Fix broken toast animations & DOM removal 2022-04-05 13:16:13 -07:00
Michael Shamoon
fde0f4ca0a Add initiating toast 2022-04-05 13:16:13 -07:00
Michael Shamoon
73cab2af2d Refactor uploads to service, working global dd 2022-04-05 13:16:12 -07:00
dependabot[bot]
94d2198b30 Bump pillow from 9.0.1 to 9.1.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.1 to 9.1.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.1...9.1.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 18:20:14 +00:00
Trenton Holmes
88a67c8703 Merge pull request #618 from paperless-ngx/dependabot/pip/dev/pikepdf-5.1.1
Bump pikepdf from 5.1.0 to 5.1.1
2022-04-05 11:14:21 -07:00
Felix E
ccf9b1291e Merge pull request #591 from paperless-ngx/feature-version-checker
Feature: Update checker
2022-04-05 20:11:21 +02:00
Quinn Casey
47dae716ae Merge pull request #599 from stumpylog/minor-bug-fixes
Fixes downloaded filename, add more consumer ignore settings
2022-04-05 09:56:54 -07:00
Quinn Casey
ea26e1c72f Merge pull request #576 from fantasticle/dev
Update regex date match patterns
2022-04-05 09:52:27 -07:00
Quinn Casey
e6d79f0673 Update docs, examples with new ignore settings 2022-04-05 09:21:18 -07:00
Quinn Casey
bf7002d0ae Merge pull request #616 from paperless-ngx/fix-save-vew-modal-errors
fix some api error displaying
2022-04-05 09:10:15 -07:00
Quinn Casey
cbae145da5 Merge pull request #564 from paperless-ngx/feature-password-protected-pdfs
Feature: Show prompt on password-protected pdfs
2022-04-05 08:59:29 -07:00
shamoon
a728502988 Update bug-report.yml 2022-04-04 15:30:40 -07:00
shamoon
9419f74d13 Update bug-report.yml 2022-04-04 15:30:15 -07:00
shamoon
50523c1566 Update bug-report.yml 2022-04-04 15:18:59 -07:00
shamoon
e9ef3e270d Update bug-report.yml 2022-04-04 15:18:12 -07:00
shamoon
9078f7beef Update bug-report.yml 2022-04-04 15:03:35 -07:00
shamoon
ac2c5abb09 Create config.yml 2022-04-04 15:02:41 -07:00
shamoon
a02235eb2b Delete other.md 2022-04-04 14:59:09 -07:00
shamoon
7658761940 Update bug-report.yml 2022-04-04 14:57:58 -07:00
shamoon
3f03f076cf Create bug-report.yml 2022-04-04 14:56:55 -07:00
shamoon
141e6de88f Delete bug_report.md 2022-04-04 14:56:21 -07:00
Trenton Holmes
88bbfe5961 Merge pull request #594 from danielBreitlauch/dev
FIX BUG: case-sensitive matching was not possible
2022-04-04 09:24:59 -07:00
Trenton Holmes
d60569b6d6 Quiets the pytest output 2022-04-04 17:59:37 +02:00
Michael Shamoon
91165e80ba Remove unused default 2022-04-04 07:05:00 -07:00
dependabot[bot]
a15f9552eb Bump pikepdf from 5.1.0 to 5.1.1
Bumps [pikepdf](https://github.com/pikepdf/pikepdf) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/pikepdf/pikepdf/releases)
- [Changelog](https://github.com/pikepdf/pikepdf/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/pikepdf/pikepdf/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: pikepdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-03 22:20:33 +00:00
Trenton Holmes
501d225f93 Merge pull request #557 from paperless-ngx/dependabot/pip/dev/sphinx-4.5.0
Bump sphinx from 4.4.0 to 4.5.0
2022-04-03 15:08:38 -07:00
dependabot[bot]
4942f244da Bump sphinx from 4.4.0 to 4.5.0
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v4.4.0...v4.5.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-03 20:35:06 +00:00
Trenton Holmes
1be5c9af56 Merge pull request #554 from paperless-ngx/dependabot/pip/dev/black-22.3.0
Bump black from 22.1.0 to 22.3.0
2022-04-03 13:14:03 -07:00
Trenton Holmes
fab7abb85b Merge pull request #622 from fantasticle/patch-2
fix 404 for post-consumption-example
2022-04-03 08:45:13 -07:00
fantasticle
818d383f2e Merge branch 'paperless-ngx:dev' into dev 2022-04-03 16:42:51 +02:00
shamoon
5fffa32630 disable download buttons while awaiting zip 2022-04-02 22:23:42 -07:00
Michael Shamoon
19d5feb483 Fix save view error for filter_rules
see #601
2022-04-02 19:49:58 -07:00
Michael Shamoon
199fc6be94 Properly display api errors on list filter & translate error message 2022-04-02 19:45:54 -07:00
Trenton Holmes
865729c033 Merge pull request #611 from stumpylog/bug-fix-install-script
Support docker-compose v2 in install
2022-04-02 15:36:52 -07:00
Trenton Holmes
6aa9071e24 Converts the docker compose check to use if statement 2022-04-02 14:34:19 -07:00
Trenton Holmes
6db3fc2eea Fixes an issue where the install script wouldn't recognize docker compose v2 command 2022-04-02 14:34:19 -07:00
shamoon
65ffaaa67c Merge pull request #623 from paperless-ngx/feature-fix-docker-tags
Fixes the Docker image tags
2022-04-02 13:46:23 -07:00
Michael Shamoon
440467e304 Allow notify user if update checking not explicitly set 2022-04-02 10:10:49 -07:00
fantasticle
07f2c9c1c6 Update docs/advanced_usage.rst
Co-authored-by: Felix E <felix@eckhofer.com>
2022-04-02 18:25:56 +02:00
Fantasticle
74422dd000 update name from master to main 2022-04-02 18:19:11 +02:00
Trenton Holmes
78d663bbb4 Fixes the Docker image tags 2022-04-02 08:48:58 -07:00
fantasticle
6cc2fa5306 fix 404 for post-consumption-example
still pointed to jonas' repository
2022-04-02 15:56:03 +02:00
Fantasticle
db0a58ea04 fix link for post-consumption-example, 404d to jonas 2022-04-02 15:52:32 +02:00
fantasticle
eba1e69e64 Merge branch 'paperless-ngx:dev' into dev 2022-04-02 15:49:35 +02:00
shamoon
a4e7877033 Update docs/configuration.rst for consistency
Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-04-02 01:37:37 -07:00
Michael Shamoon
c62260ab02 Use GH api URL
Update configuration.rst
2022-04-02 01:36:37 -07:00
Michael Shamoon
b58550bb79 refactor to update_available 2022-04-02 01:36:19 -07:00
Michael Shamoon
d02c7df75c json parse version string 2022-04-02 01:36:19 -07:00
Michael Shamoon
6dbebf4806 Fix version string regex 2022-04-02 01:33:51 -07:00
Michael Shamoon
1019660f6a Add config variable for update check 2022-04-02 01:33:51 -07:00
Michael Shamoon
bfd11060ec Add version check to app frame 2022-04-02 01:33:51 -07:00
Michael Shamoon
7b6dccf5ef RemoteVersionService 2022-04-02 01:33:51 -07:00
Michael Shamoon
d76eccad1c remote_version API endpoint 2022-04-02 01:33:51 -07:00
Michael Shamoon
6f0ac7ae45 Update bootstrap-icons.svg 2022-04-02 01:33:50 -07:00
dependabot[bot]
8f17ed1eb9 Bump black from 22.1.0 to 22.3.0
Bumps [black](https://github.com/psf/black) from 22.1.0 to 22.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.1.0...22.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-02 08:29:39 +00:00
shamoon
9737e4a24d Merge pull request #238 from schnuffle/feature-split-dockerimage
Feature split dockerimage
2022-04-02 01:24:15 -07:00
Quinn Casey
805c17565b Merge pull request #617 from paperless-ngx/fix-move-to-trash
uses shutil.move instead of rename
2022-04-02 15:17:43 +07:00
Florian Brandes
8e9d1cdd18 uses shutil.move instead of rename
fixes issues with cross-filesystem movement

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2022-04-02 07:23:31 +02:00
shamoon
1d3300fb34 Merge pull request #610 from paperless-ngx/fix-npm-deps-010222_2
Fix npm deps 01.02.22 2
2022-04-01 21:41:54 -07:00
Trenton Holmes
26d93cf3be Fixes the name and path of the built image so it doesn't duplicate 2022-04-01 16:17:22 -07:00
Michael Shamoon
4e3183ee65 remove unused ngx-infinite-scroll
see 9993381cda
2022-04-01 14:19:59 -07:00
Michael Shamoon
8370ec58c1 bump dirty-check-forms, ngx-infinite-scroll, typescript 2022-04-01 13:54:14 -07:00
shamoon
0d1bcd3c13 Merge pull request #600 from paperless-ngx/fix-npm-deps-010222
Fix npm dependencies 01.02.22
2022-04-01 13:44:10 -07:00
Michael Shamoon
a456b968af bump @types/node, ng2-pdf-viewer, cypress 2022-04-01 13:25:36 -07:00
Daniel Breitlauch
2b5562e376 adding case-sensitive tests 2022-04-01 21:15:30 +02:00
Michael Shamoon
3a242dc296 remove stubborn failing e2e settings test for now 2022-04-01 12:11:08 -07:00
Michael Shamoon
5aff9b6fdb bump angular deps & regenerate package-lock 2022-04-01 11:41:01 -07:00
Trenton Holmes
35b3216fee Fixes a couple of minor bugs in the downloading of documents and additional consumer ignore items 2022-04-01 11:12:18 -07:00
Michael Shamoon
fac6fe0c2e Squashed commit of the following:
commit 3709bf5d7602bb2e126465870e00fca35d4f99be
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Apr 1 09:24:12 2022 -0700

    Attempt 2 to fix test failing on GHA
2022-04-01 09:28:47 -07:00
Daniel Breitlauch
6f8020e30d removing transformation to lowercase since it is not needed at all. 2022-04-01 18:26:01 +02:00
Michael Shamoon
efbc2a5715 Fix failing e2e settings test
[ci skip]
2022-04-01 09:09:02 -07:00
Daniel Breitlauch
0bee3901b6 Merge branch 'paperless-ngx:dev' into dev 2022-04-01 12:04:51 +02:00
Daniel Breitlauch
7106c68032 FIX BUG: case-sensitive matching was not possible 2022-04-01 12:03:05 +02:00
fantasticle
be707536bd Merge branch 'paperless-ngx:dev' into dev 2022-04-01 11:35:00 +02:00
Quinn Casey
d18eebf97d Merge pull request #588 from paperless-ngx/locale-belarusian
Add Belarusian localization
2022-04-01 11:51:02 +07:00
Paperless-ngx Translation Bot [bot]
60cc7afc72 New Crowdin updates (#538)
* New translations django.po (Spanish)
[ci skip]

* New translations messages.xlf (Spanish)
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations django.po (Serbian (Latin))
[ci skip]

* New translations messages.xlf (Serbian (Latin))
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations messages.xlf (French)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations messages.xlf (Finnish)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations django.po (Finnish)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations django.po (Belarusian)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations messages.xlf (Belarusian)
[ci skip]
2022-03-31 19:47:16 -07:00
Michael Shamoon
b7949d2e69 Add Belarusian localization 2022-03-31 19:42:08 -07:00
shamoon
48175d5b8e Merge pull request #580 from paperless-ngx/docs-frontend-tests-style
Add frontend tests to docs
2022-03-31 15:43:50 -07:00
Michael Shamoon
cb8fd6597d Merge changes from #583 from @fantasticle
5496412aec
2022-03-31 15:42:46 -07:00
Fantasticle
4754ac2bd1 remove unnecessary import 2022-03-31 21:25:58 +02:00
Fantasticle
3cca77e748 add more tests for regex date parser, remove duplicate name 2022-03-31 21:24:57 +02:00
Trenton Holmes
4ec1aaabe6 Adds settings for worker retry time, with what should be sensible default 2022-03-31 10:24:46 -07:00
Fantasticle
0baacbef98 update new regex pattern for second boundary 2022-03-31 09:37:15 +02:00
Michael Shamoon
70bc70ec97 Add frontend tests to docs 2022-03-30 19:09:07 -07:00
Alexey Zinchenko
be2b59431f Update troubleshooting.rst 2022-03-30 19:08:40 -07:00
shamoon
c43193b17d Add note for target branch
[ci skip]
2022-03-30 19:08:40 -07:00
Storm Heg
2147af0e6a Fix typo in api.rst 2022-03-30 19:08:30 -07:00
fantasticle
d8261b3359 add test for new regex 2022-03-30 23:18:03 +02:00
shamoon
ed2524cbbb Merge pull request #582 from paperless-ngx/fix-black-main-branch
[ci skip]
2022-03-30 10:44:33 -07:00
Trenton Holmes
76a4ae2aae Merge pull request #552 from stumpylog/bugfix-black
Bump version of black in CI/pre-commit

Revert "Merge pull request #552 from stumpylog/bugfix-black"

This reverts commit 9e8ac05f72.

Merge pull request #552 from stumpylog/bugfix-black

Bump version of black in CI/pre-commit
2022-03-30 10:35:02 -07:00
Trenton Holmes
2666e70706 Removes the filtering of on:pull_request event types 2022-03-30 10:10:36 -07:00
Trenton Holmes
19cf66be0f Updates the Dockerfile to utilize our new base image 1.0 which provides the pre-compiled wheels for certain dependencies and most base packages 2022-03-30 09:09:50 -07:00
shamoon
f3d1bd25ad Merge pull request #577 from Prominence/patch-1
add ocr fails for XX to troubleshooting.rst
2022-03-30 06:42:19 -07:00
Alexey Zinchenko
3ed6d4bc7a Update troubleshooting.rst 2022-03-30 13:27:09 +03:00
fantasticle
1ecb26a3fb Update regex date match patterns 2022-03-30 12:19:30 +02:00
Henning Häcker
8b26ddcd2c add trailing comma 2022-03-30 09:23:45 +02:00
Henning Häcker
47786dcb8c use double quotes 2022-03-30 09:23:45 +02:00
Henning Häcker
5d91d6a885 fix default value for OCR_MAX_IMAGE_PIXELS 2022-03-30 09:23:45 +02:00
Henning Häcker
559f7c2683 elaborate PAPERLESS_OCR_MAX_IMAGE_PIXELS docs 2022-03-30 09:23:45 +02:00
Henning Häcker
3b4da70c85 extract OCR_MAX_IMAGE_PIXELS into settings.py 2022-03-30 09:23:45 +02:00
Henning Häcker
95199bd325 formatting according to black 2022-03-30 09:23:45 +02:00
Henning Häcker
a8887b211e implement PAPERLESS_OCR_MAX_IMAGE_PIXELS 2022-03-30 09:23:45 +02:00
shamoon
15488fbfd0 Add note for target branch
[ci skip]
2022-03-30 00:03:48 -07:00
Michael Shamoon
9a758fc3dc fix management e2e tests title
[ci skip]
2022-03-29 23:30:05 -07:00
shamoon
edc9c3f01c Merge pull request #565 from paperless-ngx/more-e2e-tests
Add some more e2e tests
2022-03-29 23:24:45 -07:00
Michael Shamoon
83d769251d document-detail e2e tests
[ci skip]
2022-03-29 23:12:19 -07:00
Michael Shamoon
bd66333147 test changing pdf viewer 2022-03-29 20:20:46 -07:00
Michael Shamoon
2228678520 Fix settings tests failing because of loading time 2022-03-29 20:02:19 -07:00
Michael Shamoon
9a042118f9 Fix fixture organization
[ci skip]
2022-03-29 20:02:19 -07:00
Michael Shamoon
787ee454ff Mock some API methods in settings spec 2022-03-29 20:02:19 -07:00
Michael Shamoon
32a4587bd3 Mock some API methods 2022-03-29 20:02:19 -07:00
Michael Shamoon
474050ba6b Multiple documents, filtering, view changes, in document list e2e testing 2022-03-29 20:02:19 -07:00
Michael Shamoon
34657fd675 Some document list bulk editor e2e tests 2022-03-29 20:02:19 -07:00
Michael Shamoon
18747db17f Settings e2e tests 2022-03-29 20:02:19 -07:00
Michael Shamoon
dccea9434a Management e2e tests 2022-03-29 20:02:19 -07:00
Michael Shamoon
85bf92ad2f Show prompt on password-protected pdfs 2022-03-29 15:38:09 -07:00
Michael Shamoon
40b07572a9 fix index js warning 2022-03-29 15:28:55 -07:00
shamoon
94afd4f1e2 Merge pull request #561 from MichaelYochpaz/main
Fix reference from Paperless-ngx to Paperless-ng [ci skip]
2022-03-29 11:15:56 -07:00
Michael
1218944680 Fix reference from Paperless-ngx to Paperless-ng 2022-03-29 21:09:09 +03:00
Trenton Holmes
9147e3a0bd Merge pull request #552 from stumpylog/bugfix-black
Bump version of black in CI/pre-commit
2022-03-29 06:14:12 -07:00
Trenton Holmes
ed25212654 Updates black version to fix issues 2022-03-28 12:23:25 -07:00
shamoon
ce5fe61e67 Merge pull request #540 from paperless-ngx/filtering-query-params
Feature: Filtering query params aka browser navigation for filtering
2022-03-28 00:07:46 -07:00
Michael Shamoon
9e9266b92a Remove unused var 2022-03-28 00:06:42 -07:00
Michael Shamoon
e329d72e8b Clarify query var transformation code 2022-03-27 23:47:53 -07:00
Michael Shamoon
92ec3fc060 Clear all subscriptions, switchMap 2022-03-27 23:41:29 -07:00
Michael Shamoon
3afb3a905c fix ci.yml comment
[ci skip]
2022-03-27 14:44:39 -07:00
Michael Shamoon
b3e6f04b30 move const 2022-03-27 00:25:27 -07:00
Michael Shamoon
0a29f51862 Fix quick filtering 2022-03-27 00:09:09 -07:00
Michael Shamoon
7149d407cd Allow filtering by document metadata 2022-03-27 00:08:08 -07:00
Michael Shamoon
fbb17df916 Remove exact document router link matching 2022-03-26 23:30:01 -07:00
Michael Shamoon
34b317da7a Query vars for filtering 2022-03-26 23:18:12 -07:00
Quinn Casey
c161829803 Merge pull request #536 from paperless-ngx/locale-turkish
Add Turkish localization
2022-03-27 07:04:16 +07:00
shamoon
eda69dc881 Merge pull request #537 from Stormheg/patch-1
Fix typo in api documentation
2022-03-26 14:42:34 -07:00
Storm Heg
500e5c41ff Fix typo in api.rst 2022-03-26 22:34:50 +01:00
Michael Shamoon
7c2ae129d7 rxjs compatibility 2022-03-26 14:18:16 -07:00
Paperless-ngx Translation Bot [bot]
c49afa7caa New Crowdin updates (#517)
* New translations messages.xlf (Slovenian)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Russian)
[ci skip]

* New translations messages.xlf (Russian)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations django.po (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]

* New translations messages.xlf (Turkish)
[ci skip]
2022-03-26 13:53:04 -07:00
Michael Shamoon
534c157809 Add Turkish localization 2022-03-26 13:52:15 -07:00
shamoon
cae4d3fae3 Merge pull request #497 from stumpylog/update-dependencies
Bumps dependencies
2022-03-26 08:33:05 -07:00
Michael Shamoon
f59500c809 pipe typo
[ci skip]
2022-03-25 01:50:04 -07:00
Quinn Casey
b75bf255ba Merge pull request #527 from paperless-ngx/reorg-frontend-ci
Realign frontend ci pipeline
2022-03-25 15:29:20 +07:00
Michael Shamoon
1588242876 realign frontend ci pipeline 2022-03-25 00:49:55 -07:00
shamoon
00eff651e6 Merge pull request #526 from FrankStrieter/fix/cypress-on-arm
fix: exclude cypress from build in Dockerfile
2022-03-24 23:49:41 -07:00
Frank Strieter
a83d6a691a fix: exclude cypress from build in Dockerfile 2022-03-25 07:26:15 +01:00
Jan-Hendrik Ewers
5065f2cb80 Add arm64 compatible docker-compose for sqlite-tika - resubmission of #27 (#479)
* Create arm variant for sqlite-tika as apache/tika does not support arm64 arch right now

https://github.com/jonaswinkler/paperless-ng/discussions/1256

* Update documentation to explain why there is a seemingly duplicated docker-compose file

* Add caveat about arm arch

* Update docs to encourage use of the new docker-compose

* Remove whitespace

https://github.com/jonaswinkler/paperless-ng/pull/1354/checks?check_run_id=3756807426

* Update docker container to use official ngx

Co-authored-by: Quinn Casey <quinn@quinncasey.com>

* doesn -> does not

* Update docker/compose/docker-compose.postgres-tika.yml

Co-authored-by: Jan-Hendrik Ewers <jh.ewers@gmail.com>

* Update docker/compose/docker-compose.sqlite-tika.arm.yml

Co-authored-by: Jan-Hendrik Ewers <jh.ewers@gmail.com>

* Update docker/compose/docker-compose.sqlite-tika.yml

Co-authored-by: Jan-Hendrik Ewers <jh.ewers@gmail.com>

* Update docker/compose/docker-compose.sqlite-tika.arm.yml

* Update docker-compose.sqlite-tika.arm.yml

* Update docker/compose/docker-compose.sqlite-tika.arm.yml

Co-authored-by: Jan-Hendrik Ewers <jh.ewers@gmail.com>

* Add redisdata to volumes

Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-03-25 06:32:16 +07:00
shamoon
a4b36b041a Merge pull request #515 from paperless-ngx/clickable-dashboard-widget-tags
Clickable tags in dashboard widgets
2022-03-24 14:36:32 -07:00
Michael Shamoon
c360d9fa18 Remove text interpolation from doc routerLink 2022-03-24 08:09:41 -07:00
Trenton Holmes
78258eb9cb Bumps django to 4.0 and fixes associated issues 2022-03-24 07:39:11 -07:00
Trenton Holmes
71e5b5cf72 Bumps pikepdf to ~5.1, dateparser to ~1.1 and other updates as possible/needed 2022-03-24 07:39:07 -07:00
shamoon
4b0229584e Merge pull request #514 from paperless-ngx/unified-management-component
Unify management lists with single template
2022-03-24 07:09:13 -07:00
Florian
b2df8297e1 Merge pull request #520 from gador/revert-pdfminer-six
Revert "Bump pdfminer-six from 20211012 to 20220319"
2022-03-24 15:06:49 +01:00
florian on nixos (Florian Brandes)
95048b14fd Revert "Bump pdfminer-six from 20211012 to 20220319"
ocrmypdf requires pdfminer-six <=20211012

This reverts commit 0932f095e1.
2022-03-24 14:28:32 +01:00
Michael Shamoon
3360791a31 Clickable tags in dashboard widgets 2022-03-23 22:08:00 -07:00
Michael Shamoon
4c65ecbe89 Unify management lists with single template 2022-03-23 13:31:00 -07:00
shamoon
65a56a1da0 Merge pull request #454 from schnuffle/pre-commit
Corrections to pass pre-commit hooks
2022-03-23 11:58:02 -07:00
shamoon
645f9b2ee2 Merge pull request #503 from paperless-ngx/testing
Add unit- & end to end test setup in frontend
2022-03-23 07:25:31 -07:00
Michael Shamoon
117157f02c Merge branch 'main' into testing 2022-03-23 07:22:52 -07:00
Quinn Casey
acab197a45 Merge pull request #508 from Unkn0wnCat/patch-1
Add API Scanning Setup section to scanners.rst
2022-03-23 20:25:27 +07:00
Kevin Kandlbinder
feed7cd556 Fix typo in docs/scanners.rst
Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-03-23 14:07:10 +01:00
Kevin Kandlbinder
c79b70fffd Fix typo in docs/scanners.rst
Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-03-23 14:06:53 +01:00
Kevin Kandlbinder
42a5709202 Fix typo in docs/scanners.rst
Co-authored-by: Quinn Casey <quinn@quinncasey.com>
2022-03-23 14:06:41 +01:00
Kevin Kandlbinder
806f1ec0a3 Add API Scanning Setup section to scanners.rst
* Add instructions for Doxie Q2 to scanners.rst
2022-03-23 12:15:35 +01:00
Frank Strieter
ccee85a05e fix code style issues
solve merge conflicts

format code

format code

format code
2022-03-23 09:39:55 +01:00
Frank Strieter
a27fb173dd solve merge conflicts 2022-03-23 09:24:07 +01:00
Frank Strieter
e4885badfc chore: update package.lock 2022-03-23 09:24:07 +01:00
Frank Strieter
62c488aff6 test: run tests in ci 2022-03-23 09:24:07 +01:00
Frank Strieter
afcb5fe3cf test: add cypress test for documents list 2022-03-23 09:24:07 +01:00
Frank Strieter
d38bed1334 test: remove most of the boilerplate tests 2022-03-23 09:24:07 +01:00
Frank Strieter
f6a9d5b038 chore: replace karma with jest 2022-03-23 09:23:59 +01:00
Frank Strieter
863258f23d chore: replace protractor with cypress 2022-03-23 09:22:40 +01:00
shamoon
3b76fa3f92 Fix pre-commit link
[ci skip]
2022-03-23 09:22:40 +01:00
shamoon
023a42fa07 Project actions on dev too
[ci skip]
2022-03-23 09:22:40 +01:00
Quinn Casey
537515432c Merge pull request #504 from paperless-ngx/locale-serbian
Add Serbian localization
2022-03-23 13:53:38 +07:00
shamoon
f93783052b Merge pull request #372 from paperless-ngx/feature-bottom-pagination
Feature: Add bottom pagination
2022-03-22 22:58:58 -07:00
Michael Shamoon
991bc1a1ce Add Serbian localization 2022-03-22 22:26:59 -07:00
Paperless-ngx Translation Bot [bot]
1b5c557c44 New Crowdin updates (#493)
* New translations django.po (Serbian (Latin))
* New translations messages.xlf (Serbian (Latin))
[ci skip]
2022-03-22 22:17:16 -07:00
shamoon
5794faef6c Merge pull request #313 from paperless-ngx/fix-issue-311
Fix #311 unable to click checkboxes in document list
2022-03-22 14:59:34 -07:00
Trenton Holmes
ec01c436ea Merge pull request #474 from paperless-ngx/dependabot/pip/dev/pdfminer-six-20220319
Bump pdfminer-six from 20211012 to 20220319
2022-03-22 07:44:39 -07:00
Trenton Holmes
9bb5568d8e Un-pickle and re-pickle the test models to resolve the version difference warning 2022-03-22 09:37:17 +01:00
shamoon
c25a107c04 Fix project automations failing on PRs from forks 2022-03-22 01:22:19 -07:00
shamoon
8f152aac69 Fix project automations failing from forks 2022-03-22 00:55:23 -07:00
dependabot[bot]
1cd5de697e Bump @angular/core from 13.2.5 to 13.3.0 in /src-ui (#488)
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 13.2.5 to 13.3.0.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.3.0/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 00:23:38 -07:00
dependabot[bot]
ce8c812669 Bump @ng-bootstrap/ng-bootstrap from 12.0.0 to 12.0.1 in /src-ui (#486)
Bumps [@ng-bootstrap/ng-bootstrap](https://github.com/ng-bootstrap/ng-bootstrap) from 12.0.0 to 12.0.1.
- [Release notes](https://github.com/ng-bootstrap/ng-bootstrap/releases)
- [Changelog](https://github.com/ng-bootstrap/ng-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ng-bootstrap/ng-bootstrap/compare/12.0.0...12.0.1)

---
updated-dependencies:
- dependency-name: "@ng-bootstrap/ng-bootstrap"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 00:17:23 -07:00
dependabot[bot]
2c3ac053d8 Bump @angular/compiler from 13.2.5 to 13.3.0 in /src-ui (#487)
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 13.2.5 to 13.3.0.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.3.0/packages/compiler)

---
updated-dependencies:
- dependency-name: "@angular/compiler"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 00:16:15 -07:00
dependabot[bot]
ca3bb6a540 Bump @types/jasmine from 3.10.3 to 4.0.0 in /src-ui (#485)
Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.10.3 to 4.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine)

---
updated-dependencies:
- dependency-name: "@types/jasmine"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 00:11:15 -07:00
dependabot[bot]
0932f095e1 Bump pdfminer-six from 20211012 to 20220319
Bumps [pdfminer-six](https://github.com/pdfminer/pdfminer.six) from 20211012 to 20220319.
- [Release notes](https://github.com/pdfminer/pdfminer.six/releases)
- [Changelog](https://github.com/pdfminer/pdfminer.six/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pdfminer/pdfminer.six/commits)

---
updated-dependencies:
- dependency-name: pdfminer-six
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-22 03:47:06 +00:00
Quinn Casey
3d3807ce41 Merge pull request #477 from paperless-ngx/dependachill
Change dependabot to check npm monthly
2022-03-22 08:01:17 +07:00
shamoon
30834eb8ff Change dependabot to check npm monthly
[ci skip]
2022-03-21 14:53:56 -07:00
dependabot[bot]
1c4e74920a Bump @types/node from 17.0.21 to 17.0.22 in /src-ui (#472)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.21 to 17.0.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:38:47 -07:00
dependabot[bot]
e6efff426a Bump @angular-devkit/build-angular from 13.2.6 to 13.3.0 in /src-ui (#471)
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 13.2.6 to 13.3.0.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.2.6...13.3.0)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:36:46 -07:00
dependabot[bot]
cacf60fdd9 Bump @angular/platform-browser-dynamic from 13.2.5 to 13.3.0 in /src-ui (#470)
Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 13.2.5 to 13.3.0.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.3.0/packages/platform-browser-dynamic)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:33:59 -07:00
dependabot[bot]
352f94ff2b Bump @angular/platform-browser from 13.2.5 to 13.3.0 in /src-ui (#468)
Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 13.2.5 to 13.3.0.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.3.0/packages/platform-browser)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:30:16 -07:00
Trenton Holmes
47530d274f Merge pull request #467 from paperless-ngx/dependabot/pip/dev/scikit-learn-1.0.2
Fix failing test after updating model format version
2022-03-21 13:28:28 -07:00
dependabot[bot]
be13ec822f Bump @angular/cli from 13.2.6 to 13.3.0 in /src-ui (#469)
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 13.2.6 to 13.3.0.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.2.6...13.3.0)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:28:09 -07:00
Marc Schaefer
c6da0cc9a2 Merge branch 'pre-commit' of github.com:schnuffle/paperless-ngx into pre-commit 2022-03-21 19:46:19 +01:00
Marc Schaefer
07623f9883 Removed nested quotes 2022-03-21 19:45:46 +01:00
Schnuffle
6e0d334a0c Indentation corrections 2022-03-21 19:38:44 +01:00
shamoon
e514b99c57 Fix pre-commit link
[ci skip]
2022-03-21 10:54:48 -07:00
Johann Bauer
cffdaefe2f Fix model test 2022-03-21 18:53:53 +01:00
Johann Bauer
9de4ca61e8 Increase FORMAT_VERSION to force model re-creation 2022-03-21 18:11:18 +01:00
dependabot[bot]
d7919c45a3 Bump scikit-learn from 0.24.0 to 1.0.2
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.24.0 to 1.0.2.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.24.0...1.0.2)

---
updated-dependencies:
- dependency-name: scikit-learn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-21 18:11:18 +01:00
shamoon
d24826a58e Project actions on dev too
[ci skip]
2022-03-21 08:55:21 -07:00
Michael Shamoon
3dfadcc397 prettier 2022-03-21 08:38:01 -07:00
Michael Shamoon
98d677dc0b Merge branch 'main' into dev 2022-03-21 08:36:44 -07:00
shamoon
4f28225188 Merge pull request #462 from paperless-ngx/update-development-documentation
Remove and integrate content from contributing.rst
2022-03-21 08:26:16 -07:00
Michael Shamoon
8059039ef4 Remove and integrate content from contributing.rst 2022-03-20 23:51:10 -07:00
Paperless Translation Bot
682f3fdc3e New Crowdin updates (#423)
* New translations messages.xlf (French)
[ci skip]

* New translations django.po (Luxembourgish)
[ci skip]

* New translations messages.xlf (Portuguese, Brazilian)
[ci skip]

* New translations django.po (Portuguese, Brazilian)
[ci skip]
2022-03-20 21:09:25 -07:00
shamoon
6f7aaba7fa Add Automatic Project Actions
[ci skip]
2022-03-20 20:53:30 -07:00
Trenton Holmes
ea7a1012b9 Uses a change file action to filter only changed src/ files 2022-03-20 21:50:54 +01:00
Trenton Holmes
f24373699e Disables coveralls step for dependabot branches/pulls 2022-03-20 21:50:54 +01:00
shamoon
f74e15840d Merge pull request #393 from stumpylog/fix-imap-tools-bug
Fix imap tools bug
2022-03-20 13:37:17 -07:00
Schnuffle
c2c8a27545 Corrections to pass pre-commit hooks 2022-03-20 15:58:37 +01:00
shamoon
0979f3c5c3 Merge pull request #446 from MaaxGr/fix-dev-docs
master to main in paperless development docs and CONTRIBUTING.md
2022-03-19 12:01:04 -07:00
shamoon
6f2fd1e2da Merge pull request #449 from paperless-ngx/marbar1-fix-typo
Fix typo: paperles(s)
2022-03-19 11:58:57 -07:00
marbar1
597effc856 Fix typo: paperles(s) 2022-03-19 19:37:52 +01:00
Max
30b3510fbd master to main in CONTRIBUTING.md 2022-03-19 17:37:43 +01:00
Max
0cf9b11c3e master to main in paperless development docs 2022-03-19 17:34:28 +01:00
shamoon
0388ce3e5b Merge pull request #298 from paperless-ngx/feature-loading-screen
Feature: App loading screen
2022-03-19 07:38:21 -07:00
Quinn Casey
1ea6a14437 Merge pull request #443 from paperless-ngx/doc-unraid-template
Update documentation on how to install paperless on Unraid
2022-03-19 17:34:22 +07:00
Felix E
e8a073d538 Merge pull request #440 from addich/fix-374
Allow USERMAP_UID to re-use existing UIDs
2022-03-19 11:04:36 +01:00
Felix E
c8ac686b22 Merge pull request #35 from Tooa/1250-gotenberg-follow-up
fix(gotenberg): use command flags
2022-03-19 11:03:32 +01:00
Felix E
81cfd13b4a Merge pull request #442 from paperless-ngx/fix-allow-shorter-search
Allow shorter search strings with Enter key
2022-03-19 10:24:14 +01:00
Uli
73a3abe535 docs: use link for Unraid store 2022-03-19 09:19:31 +01:00
Uli
9006dd12f3 docs: update Unraid FAQ section 2022-03-19 09:01:53 +01:00
shamoon
2bcbb89175 Merge pull request #419 from paperless-ngx/fix-missing-migration
Add missing migration for savedviewfilterrule
2022-03-18 23:36:14 -07:00
Michael Shamoon
39daddef34 Allow shorter search strings with Enter key 2022-03-18 23:30:26 -07:00
Michael Shamoon
ff4538612e Codestyle cleanup 2022-03-18 21:37:38 -07:00
addi
1782d00cc5 fix issue 374 2022-03-18 23:26:04 +01:00
shamoon
d4f468208e Merge pull request #415 from paperless-ngx/feature-improved-delay-button
Use progress bar for delayed buttons
2022-03-18 08:51:36 -07:00
Quinn Casey
c60b708b9c Merge pull request #324 from stumpylog/more-ci-checks
Align CI checks with pre-commit (mostly)
2022-03-18 18:01:06 +07:00
Michael Shamoon
3dee012415 Use progress bar for button delay 2022-03-17 14:37:21 -07:00
Felix Eckhofer
a1d1fb962b Add missing migration for savedviewfilterrule
Change introduced in d7cefabe98.
2022-03-17 13:19:26 +01:00
shamoon
24e02a6c5f Merge pull request #401 from paperless-ngx/fix-issue-288
Add minimum length for documents text filter
2022-03-17 03:22:19 -07:00
Michael Shamoon
4f352391ae Add minimum length to text filter 2022-03-16 08:46:07 -07:00
Paperless Translation Bot
4667e0bf88 New Crowdin updates (#342)
* New translations django.po (Romanian)
[ci skip]

* New translations django.po (Dutch)
[ci skip]

* New translations messages.xlf (Romanian)
[ci skip]

* New translations messages.xlf (Dutch)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations django.po (Slovenian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-03-15 20:58:44 -07:00
Trenton Holmes
9544e6c757 Improves the mail handling testing to use more of the imap_tools library types instead of internal types 2022-03-15 16:25:51 -07:00
shamoon
83b5e1a49d Merge pull request #388 from paperless-ngx/update-dirty-check-forms
Update @ngneat/dirty-check-forms to 2.0.0
2022-03-15 15:34:33 -07:00
Trenton Holmes
4f287b5ecd Fixes the EmailAddress which was a dict and is now a class 2022-03-15 14:00:01 -07:00
Michael Shamoon
4c346be367 Update @ngneat/dirty-check-forms to 2.0.0 2022-03-15 13:49:43 -07:00
Michael Shamoon
c87ac6f1ad Add bottom pagination for management lists 2022-03-15 10:17:19 -07:00
shamoon
02dc395880 Merge pull request #366 from paperless-ngx/fix-issue-365
Fix filterable dropdown buttons arent translated
2022-03-15 08:25:09 -07:00
Trenton Holmes
63a3e0b325 Merge pull request #330 from paperless-ngx/dependabot/pip/dev/sphinx-4.4.0
Bump sphinx from 3.4.3 to 4.4.0
2022-03-15 07:45:37 -07:00
Michael Shamoon
01ae5688d7 Add bottom pagination 2022-03-15 00:58:58 -07:00
Michael Shamoon
ec8b10c85b Fix filterable dropdown buttons arent translated 2022-03-14 22:40:45 -07:00
shamoon
19ff8339be Merge pull request #304 from paperless-ngx/pull-request-template
Create PULL_REQUEST_TEMPLATE.md
2022-03-14 16:26:04 -07:00
shamoon
a440b712de Merge pull request #355 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/rxjs-7.5.5
Bump rxjs from 6.6.7 to 7.5.5 in /src-ui
2022-03-14 16:24:26 -07:00
Michael Shamoon
3653045922 rxjs7 compatibility 2022-03-14 16:23:14 -07:00
dependabot[bot]
0d7438e398 Bump rxjs from 6.6.7 to 7.5.5 in /src-ui
Bumps [rxjs](https://github.com/reactivex/rxjs) from 6.6.7 to 7.5.5.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/6.6.7...7.5.5)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 23:07:51 +00:00
shamoon
81b17bec69 Merge pull request #353 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/cli-13.2.6
Bump @angular/cli from 13.2.5 to 13.2.6 in /src-ui
2022-03-14 16:06:53 -07:00
dependabot[bot]
e43c446c38 Bump @angular/cli from 13.2.5 to 13.2.6 in /src-ui
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.2.5...13.2.6)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 23:03:13 +00:00
shamoon
0cb442c6e0 Merge pull request #354 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/animations-13.2.6
Bump @angular/animations from 13.2.5 to 13.2.6 in /src-ui
2022-03-14 16:02:20 -07:00
dependabot[bot]
17ea079fcd Bump @angular/animations from 13.2.5 to 13.2.6 in /src-ui
Bumps [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.2.6/packages/animations)

---
updated-dependencies:
- dependency-name: "@angular/animations"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 22:58:58 +00:00
shamoon
2270aefdee Merge pull request #352 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular/common-13.2.6
Bump @angular/common from 13.2.5 to 13.2.6 in /src-ui
2022-03-14 15:58:03 -07:00
shamoon
30828bcbe0 Merge pull request #356 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/popperjs/core-2.11.4
Bump @popperjs/core from 2.11.2 to 2.11.4 in /src-ui
2022-03-14 15:50:13 -07:00
dependabot[bot]
4667adc64d Bump sphinx from 3.4.3 to 4.4.0
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 3.4.3 to 4.4.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v3.4.3...v4.4.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 22:29:17 +00:00
dependabot[bot]
de779d453c Bump imap-tools from 0.52.0 to 0.53.0
Bumps [imap-tools](https://github.com/ikvk/imap_tools) from 0.52.0 to 0.53.0.
- [Release notes](https://github.com/ikvk/imap_tools/releases)
- [Changelog](https://github.com/ikvk/imap_tools/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/ikvk/imap_tools/compare/v0.52.0...v0.53.0)

---
updated-dependencies:
- dependency-name: imap-tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 23:23:12 +01:00
dependabot[bot]
fe959b30c6 Bump pytest from 7.0.1 to 7.1.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.0.1 to 7.1.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.0.1...7.1.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 23:22:39 +01:00
dependabot[bot]
3fcbb17a15 Bump @popperjs/core from 2.11.2 to 2.11.4 in /src-ui
Bumps [@popperjs/core](https://github.com/popperjs/popper-core) from 2.11.2 to 2.11.4.
- [Release notes](https://github.com/popperjs/popper-core/releases)
- [Commits](https://github.com/popperjs/popper-core/compare/v2.11.2...v2.11.4)

---
updated-dependencies:
- dependency-name: "@popperjs/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 20:21:40 +00:00
dependabot[bot]
cdfde1d91f Bump @angular/common from 13.2.5 to 13.2.6 in /src-ui
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.2.6/packages/common)

---
updated-dependencies:
- dependency-name: "@angular/common"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 20:19:28 +00:00
dependabot[bot]
64a5b24e12 Bump ocrmypdf from 13.4.0 to 13.4.1
Bumps [ocrmypdf](https://github.com/jbarlow83/ocrmypdf) from 13.4.0 to 13.4.1.
- [Release notes](https://github.com/jbarlow83/ocrmypdf/releases)
- [Changelog](https://github.com/ocrmypdf/OCRmyPDF/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/jbarlow83/ocrmypdf/compare/v13.4.0...v13.4.1)

---
updated-dependencies:
- dependency-name: ocrmypdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 19:39:06 +01:00
Trenton Holmes
7d29bd216d Adds back certain dependencies under certain Python versions to fix dependabot 2022-03-14 19:08:11 +01:00
Simon Siebert
1abd7cc2a0 Fixing Test 2022-03-14 19:03:09 +01:00
Simon Siebert
78608d92b4 Fixing code formating 2022-03-14 19:03:09 +01:00
Simon Siebert
54cbacf4f4 Update parsers.py and test_consumer.py 2022-03-14 19:03:09 +01:00
shamoon
b43aae84ab Merge pull request #247 from paperless-ngx/locale-chinese-simplified
Add Chinese localization
2022-03-14 07:22:28 -07:00
shamoon
9d9789953b Merge pull request #322 from paperless-ngx/fix-sphinx-errors
Fix minor sphinx errors
2022-03-14 06:49:25 -07:00
Paperless Translation Bot
614eb930d3 New Crowdin updates (#308)
* New translations messages.xlf (Slovenian)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]

* New translations django.po (Polish)
[ci skip]

* New translations messages.xlf (Polish)
[ci skip]
2022-03-13 21:18:34 -07:00
dependabot[bot]
62094a2098 Bump @angular-devkit/build-angular from 13.2.5 to 13.2.6 in /src-ui (#329)
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/13.2.5...13.2.6)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-13 21:17:43 -07:00
dependabot[bot]
84ed805fd7 Bump karma-chrome-launcher from 3.1.0 to 3.1.1 in /src-ui (#328)
Bumps [karma-chrome-launcher](https://github.com/karma-runner/karma-chrome-launcher) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/karma-runner/karma-chrome-launcher/releases)
- [Changelog](https://github.com/karma-runner/karma-chrome-launcher/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-chrome-launcher/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: karma-chrome-launcher
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-13 21:14:49 -07:00
dependabot[bot]
82a158e803 Bump @angular/localize from 13.2.5 to 13.2.6 in /src-ui (#327)
Bumps [@angular/localize](https://github.com/angular/angular) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/compare/13.2.5...13.2.6)

---
updated-dependencies:
- dependency-name: "@angular/localize"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-13 21:11:11 -07:00
dependabot[bot]
1527ae1472 Bump @angular/router from 13.2.5 to 13.2.6 in /src-ui (#326)
Bumps [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.2.6/packages/router)

---
updated-dependencies:
- dependency-name: "@angular/router"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-13 21:03:27 -07:00
dependabot[bot]
5d1e86fdc3 Bump @angular/forms from 13.2.5 to 13.2.6 in /src-ui (#325)
Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 13.2.5 to 13.2.6.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)
- [Commits](https://github.com/angular/angular/commits/13.2.6/packages/forms)

---
updated-dependencies:
- dependency-name: "@angular/forms"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-13 21:00:13 -07:00
shamoon
a6d2a390f0 Add review groups 2022-03-13 20:54:06 -07:00
Michael Shamoon
a47ec7c77d Add timeout warning 2022-03-13 20:45:14 -07:00
Trenton Holmes
ee1404d99e Adds additional CI checks for the backend and frontend, to complement pre-commit hooks which should already be run 2022-03-13 19:37:34 -07:00
shamoon
2caba558d7 Revert "Bump sphinx from 3.4.3 to 4.4.0" (#323) 2022-03-13 19:27:02 -07:00
shamoon
5e4119f6a9 Merge pull request #183 from paperless-ngx/dependabot/pip/dev/sphinx-4.4.0
Bump sphinx from 3.4.3 to 4.4.0
2022-03-13 19:06:42 -07:00
Michael Shamoon
6b46b43367 Fix minor sphinx errors 2022-03-13 17:48:17 -07:00
shamoon
460f10f46a Merge pull request #314 from paperless-ngx/fix-issue-312
Fix page links hidden
2022-03-13 16:31:57 -07:00
Michael Shamoon
37c6201a5a Add Chinese localization
Addresses https://github.com/paperless-ngx/paperless-ngx/issues/134#issuecomment-1062950795
2022-03-13 14:26:52 -07:00
shamoon
4184988c0c Merge pull request #315 from paperless-ngx/locale-slovenian
Add Slovenian language for frontend
2022-03-13 14:24:59 -07:00
Trenton Holmes
3264015dac Merge pull request #296 from stumpylog/ci-cache-venv
Updates actions to use GHA Python pipenv caching
2022-03-13 14:00:23 -07:00
Michael Shamoon
d1c785d1d0 Add Slovenian language for frontend
See #303
2022-03-13 09:15:42 -07:00
Michael Shamoon
abd63df75b Fix page links hidden
Closes #312
2022-03-13 09:05:29 -07:00
Michael Shamoon
57f35292d5 Fix dark mode selected table row background color 2022-03-13 08:45:39 -07:00
Michael Shamoon
7bd6f4a4ea Prevent event collision 2022-03-13 08:41:36 -07:00
Trenton Holmes
35de8e6ad5 Changes the pipenv install to be a sync 2022-03-13 08:20:40 -07:00
Trenton Holmes
1549edfd55 Changes codestyle and documentation steps to use cache as well 2022-03-13 08:07:28 -07:00
Trenton Holmes
f33cf6cc2e Fixes coveralls not running 2022-03-13 08:07:28 -07:00
Trenton Holmes
3a8cffe3ce Removes duplicated install of pipenv, changes to use pipx as per the official example 2022-03-13 08:07:28 -07:00
Trenton Holmes
58066443de Updates GHA to use the setup-python pipenv caching 2022-03-13 08:07:28 -07:00
shamoon
20566b6571 Add note to include how to test 2022-03-13 04:14:00 -07:00
shamoon
af52544792 Update PR template with suggestions 2022-03-13 03:56:59 -07:00
Paperless Translation Bot
594445f6dd New Crowdin updates (#305)
* New translations django.po (Slovenian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]
2022-03-13 03:20:56 -07:00
shamoon
c3e86f0f21 Merge pull request #306 from lippoliv/feature-ignore-vscode-folder
ignore vscode folder
2022-03-13 01:22:34 -08:00
Oliver Lippert
d80102a7a4 ignore .vscode folder
Signed-off-by: Oliver Lippert <oliver@allesit.de>
2022-03-13 10:17:42 +01:00
Paperless Translation Bot
e886c38b45 New translations messages.xlf (Slovenian) (#303)
[ci skip]
2022-03-13 01:16:46 -08:00
shamoon
33a5823801 Update PULL_REQUEST_TEMPLATE.md 2022-03-13 01:15:15 -08:00
shamoon
b220d15fff Create PULL_REQUEST_TEMPLATE.md 2022-03-13 01:08:49 -08:00
Tooa
6fb856ee70 fix(gotenberg): use command flags
Gotenberg v7 does not use environment variables anymore, but command's flags.

See: https://gotenberg.dev/docs/get-started/docker-compose#modules-properties
2022-03-13 07:40:31 +01:00
Paperless Translation Bot
3922588716 New Crowdin updates (#292)
* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Slovak)
[ci skip]

* New translations messages.xlf (Slovak)
[ci skip]

* New translations django.po (Slovak)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]
2022-03-12 20:24:22 -08:00
shamoon
940b12a908 Merge pull request #297 from stumpylog/dependabot-gha-updates
Enable dependabot GHA updates
2022-03-12 20:12:28 -08:00
Michael Shamoon
db5349881d App loading screen 2022-03-12 20:09:16 -08:00
Trenton Holmes
0edfe83a23 Enables dependabot for Github Action versions 2022-03-12 18:03:39 -08:00
Oliver Lippert
7abc6440f6 add link to setup instructions for bare metal (#221) 2022-03-12 08:43:12 -08:00
Quinn Casey
168ce2111d Merge pull request #278 from stumpylog/pre-commit-python-changes
Python Cleanup from pre-commit
2022-03-12 08:09:13 -08:00
Paperless Translation Bot
617d0bfee7 New translations messages.xlf (Portuguese, Brazilian) (#286)
[ci skip]
2022-03-12 03:10:58 -08:00
Quinn Casey
0d0da0d623 Merge pull request #275 from paperless-ngx/org-membership
Add Organization Structure & Membership
2022-03-11 12:39:42 -08:00
Trenton Holmes
dc657f2eb0 Maybe make CodeQL happy about this exception handling 2022-03-11 12:39:40 -08:00
shamoon
ef2b4a7536 Merge pull request #276 from paperless-ngx/prettier-cleanup-ts-js-md
Prettier cleanup for .ts .js and .md files
2022-03-11 12:31:21 -08:00
Michael Shamoon
e41d75c374 Prettier code cleanup for PR #273 2022-03-11 12:00:31 -08:00
Michael Shamoon
eb55f5655f Prettier code cleanup for .md files 2022-03-11 11:58:19 -08:00
Michael Shamoon
9f72bf7745 Prettier code cleanup for .js files
See #182
2022-03-11 11:58:19 -08:00
Michael Shamoon
f34202a82a Prettier code cleanup for .ts files
See #182
2022-03-11 11:58:19 -08:00
shamoon
f8c8161a3e Merge pull request #273 from GruberViktor/dev
Added nav buttons in the document detail view
2022-03-11 11:57:03 -08:00
GruberViktor
63aafd3133 remove automatic focus on title in document-detail view
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-03-11 20:54:24 +01:00
Trenton Holmes
e2303235cd Fixes what looks like a conflict between black and flake8 2022-03-11 11:34:32 -08:00
Trenton Holmes
1771d18a21 Runs the pre-commit hooks over all the Python files 2022-03-11 11:34:28 -08:00
GruberViktor
d02a0b2213 remove text from close-button in the document-detail view
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-03-11 20:22:39 +01:00
GruberViktor
6cbbd0c515 Apply suggestions from code review
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2022-03-11 20:16:53 +01:00
Quinn Casey
cae26f4f70 Fix typo 2022-03-11 11:01:24 -08:00
dependabot[bot]
f328d1461f Bump sphinx from 3.4.3 to 4.4.0
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 3.4.3 to 4.4.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v3.4.3...v4.4.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-11 18:56:10 +00:00
Quinn Casey
d3e9799279 Merge pull request #182 from stumpylog/pre-commit-hooks
Adds pre-commit hooks for linting and formatting
2022-03-11 10:50:04 -08:00
Paperless Translation Bot
14eefe1f5d New Crowdin updates (#265)
* New translations django.po (Portuguese)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]

* New translations django.po (German)
[ci skip]

* New translations messages.xlf (Portuguese)
[ci skip]
2022-03-11 10:49:59 -08:00
Trenton Holmes
6c2cc4cf50 Configures prettier formatting further 2022-03-11 10:32:25 -08:00
shamoon
440f4729ac Merge pull request #253 from paperless-ngx/feature-better-date-keyboard-input
Improve date keyboard input
2022-03-11 10:27:56 -08:00
Quinn Casey
e1c6042189 Add Organization Structure & Membership 2022-03-11 10:23:59 -08:00
Quinn Casey
55a057307c Merge pull request #274 from paperless-ngx/add-code-of-conduct-1
Add `CODE_OF_CONDUCT.md`
2022-03-11 09:44:50 -08:00
Trenton Holmes
8a5176e593 Updates the documentation to include installation of the pre-commit hooks 2022-03-11 09:26:41 -08:00
Quinn Casey
a757778fba Create CODE_OF_CONDUCT.md 2022-03-11 09:09:48 -08:00
Viktor
1259911275 Added nav buttons in the document detail view
Sometimes, when you are looking for a document, you need to go into the document-detail view
to read the pdf. To view the next document in the detail view, normally you would go back and
then click on the next.

Here I added two buttons to the toolbar to traverse throught the documents easily.
2022-03-11 17:35:38 +01:00
Michael Shamoon
4e4035a867 Fix enter key was prevented 2022-03-11 08:11:35 -08:00
shamoon
9bd87e78dc Merge pull request #263 from paperless-ngx/fix-dropdown-count
Fix: Include excluded items in dropdown count
2022-03-11 08:08:54 -08:00
Trenton Holmes
12a1c4ccbf Ensures Pipfile and requirements are up to date 2022-03-11 07:07:28 -08:00
Trenton Holmes
888e17cb91 Removes flake8 ignored warnings and errors, as black formatting will take care of almost all of these 2022-03-11 07:07:28 -08:00
Trenton Holmes
0fa48cea2a Updates the beautysh hook to use tabs, as this reduces the diff of the output. Updates .editorconfig to use spaces in Markdown files to match prettier formatting 2022-03-11 07:07:27 -08:00
Trenton Holmes
9b7d393d5d Removes migrations exclusion from black formatting 2022-03-11 07:07:27 -08:00
Trenton Holmes
cc702cbdfa Adds commenting and a little organization to the hook configuration 2022-03-11 07:07:26 -08:00
Trenton Holmes
e8ddb0c427 Removes tslint which doesn't work. Adds exclusions of the migrations folder to Python related hooks 2022-03-11 07:07:26 -08:00
Trenton Holmes
feb677e656 Adds and configures pre-commit hooks for linting and formatting during development 2022-03-11 07:07:25 -08:00
Quinn Casey
c19dd81ecf Merge pull request #242 from stumpylog/resolve-test-warnings
Reduce warnings in test suite
2022-03-11 05:54:19 -08:00
shamoon
01a50a3a98 Merge pull request #262 from kpj/fix-install_url
Fix install url in docs
2022-03-11 01:27:18 -08:00
Michael Shamoon
8920a32c75 Include excluded items in dropdown count 2022-03-11 01:17:19 -08:00
Michael Shamoon
4773d0bb7f semicolons 2022-03-11 01:03:43 -08:00
Michael Shamoon
20a6c5e7b7 more code cleanup 2022-03-11 00:52:32 -08:00
Michael Shamoon
0826e0f96b code cleanup 2022-03-11 00:48:06 -08:00
Kim
bd374f4c36 Also update other occurrences of master branch to main 2022-03-11 09:45:44 +01:00
Kim
bac8849f2d Use main instead of master branch in install URL 2022-03-11 09:39:01 +01:00
Michael Shamoon
ad87c3c87d Fix dropdown inputs 2022-03-11 00:29:59 -08:00
Michael Shamoon
4c7eb34290 Move padding into date formatter 2022-03-11 00:28:06 -08:00
Michael Shamoon
a1fd9f7310 Limit date input field chars and length 2022-03-11 00:11:59 -08:00
Michael Shamoon
9433908218 Delineate -ngx from -ng in changelog 2022-03-10 23:15:12 -08:00
shamoon
8f1c4cd9c4 Merge pull request #243 from paperless-ngx/css-variables
Custom color theming
2022-03-10 19:26:15 -08:00
Trenton Holmes
85b210ebf6 Reduces number of warnings from testing from 165 to 128. In doing so, fixes a few minor things in the decrypt and export commands 2022-03-10 18:12:48 -08:00
Michael Shamoon
af7ffa3878 Allow date dropdowns to use new formatter 2022-03-10 16:48:03 -08:00
Michael Shamoon
96a84d16a6 Merge branch 'main' into dev 2022-03-10 16:40:38 -08:00
Michael Shamoon
0737ea30e8 fix comment 2022-03-10 15:27:02 -08:00
Michael Shamoon
1807811903 Allow formatting non-padded dates 2022-03-10 15:17:32 -08:00
Michael Shamoon
a33dce1948 Code formatting 2022-03-10 15:17:32 -08:00
Michael Shamoon
ef4dc1b49e strip all delimiters 2022-03-10 15:17:31 -08:00
Michael Shamoon
0f886be109 semicolon 2022-03-10 15:17:31 -08:00
shamoon
73a597855f Merge pull request #250 from GruberViktor/date_parser
Parse dates when entered without separators
2022-03-10 15:16:50 -08:00
Quinn Casey
86d9c94962 Fix failed docker run on multi-tags 2022-03-10 14:58:28 -08:00
Quinn Casey
21ec2dfa68 Merge pull request #251 from paperless-ngx/dependabot-label-fix
Make dependabot labels consistent
2022-03-10 14:06:28 -08:00
Quinn Casey
296d1d1b61 Make dependabot labels consistent 2022-03-10 14:01:58 -08:00
Michael Shamoon
af536dfefb Fix outline buttons become invisible in light mode 2022-03-10 13:59:31 -08:00
Michael Shamoon
7d7c5207d7 Fix changing theme incorrectly affects dark mode settings 2022-03-10 13:56:22 -08:00
Viktor
52f0a3dfb9 Parse dates when entered without separators
This adds date dividers if none are entered.
It also adds the current year if it wasn't entered.

This allows users to just enter 1003, 100322, 10032022 and
have it expanded to 10.03.2022, in the case of the German format.
(All other formats are also supported)

It also replaces commas with the date divider.
This allows quick entry of the date on the numpad.
2022-03-10 21:31:54 +01:00
Quinn Casey
4532bed7bc 1.6.0 2022-03-10 12:09:19 -08:00
shamoon
d3bccc049b 1.6.0
[skip ci]
2022-03-10 12:03:00 -08:00
shamoon
333321e600 Merge pull request #213 from paperless-ngx/beta
Merge 1.6.0 Release Candidate
2022-03-10 12:01:31 -08:00
Ingo Sigmund
081f11af40 Merge pull request #214 from isigmund/dev 2022-03-10 15:09:33 +01:00
Ingo Sigmund
9f0f458a02 Merge pull request #23 from flofeld/patch-1 2022-03-10 15:06:12 +01:00
Paperless Translation Bot
e74c716588 New Crowdin updates (#244)
* New translations django.po (Italian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Italian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Slovenian)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]

* New translations django.po (Chinese Simplified)
[ci skip]

* New translations messages.xlf (Chinese Simplified)
[ci skip]
2022-03-09 16:21:06 -08:00
Florian Feldmann
89bd0791dc Apply suggestions from code review
Co-authored-by: Ingo Sigmund <Ingo.sigmund@web.de>
2022-03-10 01:11:23 +01:00
Michael Shamoon
a591614a39 Component methods arent really private 2022-03-09 15:43:06 -08:00
Michael Shamoon
0085c8351e Prevent overriding other settings 2022-03-09 15:40:04 -08:00
Michael Shamoon
4df7f92a56 Working conversion 2022-03-09 15:34:26 -08:00
Michael Shamoon
1841cefbd8 Converting colors experiment 2022-03-09 15:19:42 -08:00
Michael Shamoon
f13ae930a5 Allow non-hex color modes from color component 2022-03-09 14:12:39 -08:00
Michael Shamoon
dbe233f0ae Skeleton implementation of color setting 2022-03-09 14:12:28 -08:00
Michael Shamoon
17e5f6d76b refactor variable names 2022-03-09 11:13:58 -08:00
Michael Shamoon
f52d167da3 fix some missed focus styles 2022-03-09 11:10:26 -08:00
Michael Shamoon
63aa7128a7 Increase contrast for dark mode colored buttons 2022-03-08 16:48:31 -08:00
Michael Shamoon
d30a652fc1 Make correspondent links on cards buttons 2022-03-08 16:45:36 -08:00
Michael Shamoon
1cd0684f62 tweak dark mode bg coloring 2022-03-08 16:41:56 -08:00
Michael Shamoon
bc97a13a62 fix logo coloring, saved view widget link, card coloring 2022-03-08 16:41:49 -08:00
Michael Shamoon
db98eed392 fix some light mode stuff due to specificity 2022-03-08 16:28:58 -08:00
Michael Shamoon
76115d6a81 checkbox focus color 2022-03-08 16:05:21 -08:00
Michael Shamoon
9e2fd52434 tab switching styling 2022-03-08 16:03:32 -08:00
Michael Shamoon
7ca12c3dc4 toasts 2022-03-08 16:02:16 -08:00
Michael Shamoon
3dffa09977 fix some focus styling 2022-03-08 15:50:10 -08:00
Michael Shamoon
7c313eed33 unify some button colors 2022-03-08 15:38:16 -08:00
Michael Shamoon
383cf7f4d5 fix some buttons, focus shadow 2022-03-08 15:22:17 -08:00
Michael Shamoon
4babf0d102 Initial conversion to css variables 2022-03-08 14:49:40 -08:00
Quinn Casey
df4567f9e4 Merge pull request #236 from stumpylog/minimal-pipfile
Remove non-direct dependencies from Pipfile
2022-03-08 06:25:58 -08:00
Quinn Casey
db2bf66eee Merge pull request #235 from paperless-ngx/1.6.0-rc1-dependency-updates
Update @angular/common, @angular/forms, @angular/platform-browser, ts-node, @angular/router
2022-03-08 06:12:49 -08:00
Michael Shamoon
36eaafa52a Update @angular/common, @angular/forms, @angular/platform-browser, ts-node, @angular/router
Closes #228
Closes #229
Closes #230
Closes #231
Closes #232
2022-03-07 13:07:04 -08:00
Trenton Holmes
f4d09d46f4 Removes certain packages from the Pipfile 2022-03-07 12:15:16 -08:00
shamoon
01c1b42319 Merge pull request #226 from paperless-ngx/fix-issue-225-management-page-filtering
Fix issue #225 management page filtering, add esc clearing of filter field
2022-03-07 10:50:52 -08:00
Michael Shamoon
472a3a54ab Allow esc key clearing, autofocus on management lists 2022-03-07 09:45:58 -08:00
Michael Shamoon
9fbf9923dc Page parameter breaks filtering on mangement pages
Closes #225
2022-03-07 09:45:39 -08:00
Ingo Sigmund
9d3242c13e Merge branch 'dev' of https://github.com/isigmund/paperless-ngx into dev 2022-03-06 18:03:24 +01:00
Ingo Sigmund
08c6a21bbb Revert "remove logic to delete dangling volumes: node"
This reverts commit c2da0ce521.
2022-03-06 18:03:19 +01:00
Ingo Sigmund
7d18be9928 Merge branch 'paperless-ngx:dev' into dev 2022-03-06 17:43:57 +01:00
Quinn Casey
748fe3b89f Merge pull request #219 from paperless-ngx/1.6.0-rc1-frontend-fixes1
1.6.0 rc1 frontend fixes 1
2022-03-06 08:38:34 -08:00
Michael Shamoon
b383e7dd08 Reduce debounce to avoid title erasing
Closes #216
2022-03-05 20:12:17 -08:00
Michael Shamoon
33ab69e010 Clone tags array to prevent false dirty check
Closes #215
2022-03-05 20:12:17 -08:00
shamoon
c52070d554 Merge pull request #212 from paperless-ngx/l10n_dev
New Crowdin updates
2022-03-05 20:10:52 -08:00
Quinn Casey
1d67c32351 [skip ci] Add variable body to fix incorrect changelog 2022-03-05 14:49:52 -08:00
Paperless Translation Bot
23d6589a73 New translations messages.xlf (Spanish)
[ci skip]
2022-03-05 08:50:51 -08:00
Ingo Sigmund
3ae73e7df5 Merge branch 'paperless-ngx:dev' into dev 2022-03-05 12:12:42 +01:00
Paperless Translation Bot
8f3f60d249 New translations messages.xlf (Spanish)
[ci skip]
2022-03-05 03:09:56 -08:00
Ingo Sigmund
16664789d2 remove volume: if no named volumes are used 2022-03-05 12:07:52 +01:00
Paperless Translation Bot
f97aae1fd8 New translations django.po (Luxembourgish)
[ci skip]
2022-03-04 15:16:09 -08:00
Paperless Translation Bot
7e1bbecc9f New translations django.po (German)
[ci skip]
2022-03-04 15:16:08 -08:00
Paperless Translation Bot
376a56df26 New translations django.po (Luxembourgish)
[ci skip]
2022-03-04 14:17:33 -08:00
Quinn Casey
c41b86eb68 [skip ci] Add #24 to changelog 2022-03-04 13:17:24 -08:00
Ingo Sigmund
e75ea257e8 Correct install script (stop creating unused named volumes) 2022-03-03 15:17:54 +01:00
shamoon
630cdaf08f Add documents screenshots w browser chrome 2022-02-25 01:26:34 -08:00
shamoon
140b179607 Merge pull request #125 from paperless-ngx/stalebot
Add stale.yml
2022-02-21 18:17:36 -08:00
shamoon
c8ad4e9bcd Add fixpending label to prevent stale 2022-02-21 16:11:22 -08:00
shamoon
49bc8f95f6 Update stale.yml 2022-02-21 16:05:21 -08:00
shamoon
50bab47f43 Create stale.yml 2022-02-21 14:43:33 -08:00
Stéphane Brunner
785fcfb998 Use the image on ghcr.io (#104) 2022-02-20 09:23:18 +01:00
Johann Bauer
c7541cb516 Enable dependabot for repository (#86) 2022-02-18 16:06:56 +01:00
Florian Feldmann
7680bf7c0d Added a sentence about python-dotenv format
Something like this would have helped me to get the configuration right without debugging
2021-08-09 12:15:01 +02:00
615 changed files with 135088 additions and 60457 deletions

9
.build-config.json Normal file
View File

@@ -0,0 +1,9 @@
{
"qpdf": {
"version": "11.1.1"
},
"jbig2enc": {
"version": "0.29",
"git_tag": "0.29"
}
}

View File

@@ -17,3 +17,5 @@
**/htmlcov
/src/.pytest_cache
.idea
.venv/
.vscode/

View File

@@ -18,14 +18,23 @@ max_line_length = off
indent_size = 4
indent_style = space
[*.yml]
[*.{yml,yaml}]
indent_style = space
[*.rst]
indent_style = space
[*.md]
indent_style = space
[Pipfile.lock]
indent_style = space
# Tests don't get a line width restriction. It's still a good idea to follow
# the 79 character rule, but in the interests of clarity, tests often need to
# violate it.
[**/test_*.py]
max_line_length = off
[Dockerfile*]
indent_style = space

2
.env
View File

@@ -1,2 +1,2 @@
COMPOSE_PROJECT_NAME=paperless
export PROMPT="(pipenv-projectname)$P$G"
export PROMPT="(pipenv-projectname)$P$G"

97
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Bug report
description: Something is not working
title: "[BUG] Concise description of the issue"
labels: ["bug", "unconfirmed"]
body:
- type: markdown
attributes:
value: |
Have a question? 👉 [Start a new discussion](https://github.com/paperless-ngx/paperless-ngx/discussions/new) or [ask in chat](https://matrix.to/#/#paperless:adnidor.de).
Before opening an issue, please double check:
- [The troubleshooting documentation](https://paperless-ngx.readthedocs.io/en/latest/troubleshooting.html).
- [The installation instructions](https://paperless-ngx.readthedocs.io/en/latest/setup.html#installation).
- [Existing issues and discussions](https://github.com/paperless-ngx/paperless-ngx/search?q=&type=issues).
- Disable any customer container initialization scripts, if using any
If you encounter issues while installing or configuring Paperless-ngx, please post in the ["Support" section of the discussions](https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=support).
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is. If applicable, add screenshots to help explain your problem.
placeholder: |
Currently Paperless does not work when...
[Screenshot if applicable]
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '....'
3. See error
validations:
required: true
- type: textarea
id: logs
attributes:
label: Webserver logs
description: Logs from the web server related to your issue.
render: bash
validations:
required: true
- type: textarea
id: logs_browser
attributes:
label: Browser logs
description: Logs from the web browser related to your issue, if needed
render: bash
- type: input
id: version
attributes:
label: Paperless-ngx version
placeholder: e.g. 1.6.0
validations:
required: true
- type: input
id: host-os
attributes:
label: Host OS
description: Host OS of the machine running paperless-ngx. Please add the architecture (uname -m) if applicable.
placeholder: e.g. Archlinux / Ubuntu 20.04 / Raspberry Pi `arm64`
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
options:
- Docker - official image
- Docker - linuxserver.io image
- Bare metal
- Other (please describe above)
description: Note there are significant differences from the official image and linuxserver.io, please check if your issue is specific to the third-party image.
validations:
required: true
- type: input
id: browser
attributes:
label: Browser
description: Which browser you are using, if relevant.
placeholder: e.g. Chrome, Safari
- type: input
id: config-changes
attributes:
label: Configuration changes
description: Any configuration changes you made in `docker-compose.yml`, `docker-compose.env` or `paperless.conf`.
- type: input
id: other
attributes:
label: Other
description: Any other relevant details.

View File

@@ -1,48 +0,0 @@
---
name: Bug report
about: Something is not working
title: "[BUG] Concise description of the issue"
labels: ''
assignees: ''
---
<!---
=> Before opening an issue, please check the documentation and see if it helps you resolve your issue: https://paperless-ngx.readthedocs.io/en/latest/troubleshooting.html
=> Please also make sure that you followed the installation instructions.
=> Please search the issues and look for similar issues before opening a bug report.
=> If you would like to submit a feature request please submit one under https://github.com/paperless-ngx/paperless-ngx/discussions/categories/feature-requests
=> If you encounter issues while installing of configuring Paperless-ngx, please post that in the "Support" section of the discussions. Remember that Paperless successfully runs on a variety of different systems. If paperless does not start, it's probably an issue with your system, and not an issue of paperless.
=> Don't remove the [BUG] prefix from the title.
-->
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Webserver logs**
```
If available, post any logs from the web server related to your issue.
```
**Relevant information**
- Host OS of the machine running paperless: [e.g. Archlinux / Ubuntu 20.04]
- Browser [e.g. chrome, safari]
- Version [e.g. 1.0.0]
- Installation method: [docker / bare metal]
- Any configuration changes you made in `docker-compose.yml`, `docker-compose.env` or `paperless.conf`.

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: 🤔 Questions and Help
url: https://github.com/paperless-ngx/paperless-ngx/discussions
about: This issue tracker is not for support questions. Please refer to our Discussions.
- name: 💬 Chat
url: https://matrix.to/#/#paperless:adnidor.de
about: Want to discuss Paperless-ngx with others? Check out our chat.
- name: 🚀 Feature Request
url: https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=feature-requests
about: Remember to search for existing feature requests and "up-vote" any you like

View File

@@ -1,20 +0,0 @@
---
name: Other
about: Anything that is not a feature request or bug.
title: "[Other] Title of your issue"
labels: ''
assignees: ''
---
<!--
=> Discussions, Feedback and other suggestions belong in the "Discussion" section and not on the issue tracker.
=> If you would like to submit a feature request please submit one under https://github.com/paperless-ngx/paperless-ngx/discussions/categories/feature-requests
=> If you encounter issues while installing of configuring Paperless-ngx, please post that in the "Support" section of the discussions. Remember that Paperless successfully runs on a variety of different systems. If paperless does not start, it's probably is an issue with your system, and not an issue of paperless.
=> Don't remove the [Other] prefix from the title.
-->

32
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,32 @@
<!--
Note: All PRs with code changes should be targeted to the `dev` branch, pure documentation changes can target `main`
-->
## Proposed change
<!--
Please include a summary of the change and which issue is fixed (if any) and any relevant motivation / context. List any dependencies that are required for this change. If appropriate, please include an explanation of how your proposed change can be tested. Screenshots and / or videos can also be helpful if appropriate.
-->
Fixes # (issue)
## Type of change
<!--
What type of change does your PR introduce to Paperless-ngx?
NOTE: Please check only one box!
-->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Other (please explain)
## Checklist:
- [ ] I have read & agree with the [contributing guidelines](https://github.com/paperless-ngx/paperless-ngx/blob/main/CONTRIBUTING.md).
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
- [ ] If applicable, I have checked that all tests pass, see [documentation](https://paperless-ngx.readthedocs.io/en/latest/extending.html#back-end-development).
- [ ] I have run all `pre-commit` hooks, see [documentation](https://paperless-ngx.readthedocs.io/en/latest/extending.html#code-formatting-with-pre-commit-hooks).
- [ ] I have made corresponding changes to the documentation as needed.
- [ ] I have checked my modifications for any breaking changes.

View File

@@ -6,11 +6,17 @@ updates:
# Enable version updates for npm
- package-ecosystem: "npm"
target-branch: "dev"
# Look for `package.json` and `lock` files in the `root` directory
# Look for `package.json` and `lock` files in the `/src-ui` directory
directory: "/src-ui"
# Check the npm registry for updates every week
# Check the npm registry for updates every month
schedule:
interval: "weekly"
interval: "monthly"
labels:
- "frontend"
- "dependencies"
# Add reviewers
reviewers:
- "paperless-ngx/frontend"
# Enable version updates for Python
- package-ecosystem: "pip"
@@ -20,3 +26,23 @@ updates:
# Check for updates once a week
schedule:
interval: "weekly"
labels:
- "backend"
- "dependencies"
# Add reviewers
reviewers:
- "paperless-ngx/backend"
# Enable updates for Github Actions
- package-ecosystem: "github-actions"
target-branch: "dev"
directory: "/"
schedule:
# Check for updates to GitHub Actions every month
interval: "monthly"
labels:
- "ci-cd"
- "dependencies"
# Add reviewers
reviewers:
- "paperless-ngx/ci-cd"

55
.github/release-drafter.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
autolabeler:
- label: "bug"
branch:
- '/^fix/'
title:
- "/^fix/i"
- label: "enhancement"
branch:
- '/^feature/'
title:
- "/^feature/i"
categories:
- title: 'Breaking Changes'
labels:
- 'breaking-change'
- title: 'Features'
labels:
- 'enhancement'
- title: 'Bug Fixes'
labels:
- 'bug'
- title: 'Documentation'
label: 'documentation'
- title: 'Maintenance'
labels:
- 'chore'
- 'deployment'
- 'translation'
- 'ci-cd'
- title: 'Dependencies'
collapse-after: 3
label: 'dependencies'
- title: 'All App Changes'
labels:
- 'frontend'
- 'backend'
collapse-after: 0
include-labels:
- 'enhancement'
- 'bug'
- 'chore'
- 'deployment'
- 'translation'
- 'dependencies'
- 'documentation'
- 'frontend'
- 'backend'
- 'ci-cd'
category-template: '### $TITLE'
change-template: '- $TITLE @$AUTHOR ([#$NUMBER]($URL))'
change-title-escapes: '\<*_&#@'
template: |
## paperless-ngx $RESOLVED_VERSION
$CHANGES

402
.github/scripts/cleanup-tags.py vendored Normal file
View File

@@ -0,0 +1,402 @@
#!/usr/bin/env python3
import json
import logging
import os
import shutil
import subprocess
from argparse import ArgumentParser
from typing import Dict
from typing import Final
from typing import List
from typing import Optional
from common import get_log_level
from github import ContainerPackage
from github import GithubBranchApi
from github import GithubContainerRegistryApi
logger = logging.getLogger("cleanup-tags")
class DockerManifest2:
"""
Data class wrapping the Docker Image Manifest Version 2.
See https://docs.docker.com/registry/spec/manifest-v2-2/
"""
def __init__(self, data: Dict) -> None:
self._data = data
# This is the sha256: digest string. Corresponds to GitHub API name
# if the package is an untagged package
self.digest = self._data["digest"]
platform_data_os = self._data["platform"]["os"]
platform_arch = self._data["platform"]["architecture"]
platform_variant = self._data["platform"].get(
"variant",
"",
)
self.platform = f"{platform_data_os}/{platform_arch}{platform_variant}"
class RegistryTagsCleaner:
"""
This is the base class for the image registry cleaning. Given a package
name, it will keep all images which are tagged and all untagged images
referred to by a manifest. This results in only images which have been untagged
and cannot be referenced except by their SHA in being removed. None of these
images should be referenced, so it is fine to delete them.
"""
def __init__(
self,
package_name: str,
repo_owner: str,
repo_name: str,
package_api: GithubContainerRegistryApi,
branch_api: Optional[GithubBranchApi],
):
self.actually_delete = False
self.package_api = package_api
self.branch_api = branch_api
self.package_name = package_name
self.repo_owner = repo_owner
self.repo_name = repo_name
self.tags_to_delete: List[str] = []
self.tags_to_keep: List[str] = []
# Get the information about all versions of the given package
# These are active, not deleted, the default returned from the API
self.all_package_versions = self.package_api.get_active_package_versions(
self.package_name,
)
# Get a mapping from a tag like "1.7.0" or "feature-xyz" to the ContainerPackage
# tagged with it. It makes certain lookups easy
self.all_pkgs_tags_to_version: Dict[str, ContainerPackage] = {}
for pkg in self.all_package_versions:
for tag in pkg.tags:
self.all_pkgs_tags_to_version[tag] = pkg
logger.info(
f"Located {len(self.all_package_versions)} versions of package {self.package_name}",
)
self.decide_what_tags_to_keep()
def clean(self):
"""
This method will delete image versions, based on the selected tags to delete
"""
for tag_to_delete in self.tags_to_delete:
package_version_info = self.all_pkgs_tags_to_version[tag_to_delete]
if self.actually_delete:
logger.info(
f"Deleting {tag_to_delete} (id {package_version_info.id})",
)
self.package_api.delete_package_version(
package_version_info,
)
else:
logger.info(
f"Would delete {tag_to_delete} (id {package_version_info.id})",
)
else:
logger.info("No tags to delete")
def clean_untagged(self, is_manifest_image: bool):
"""
This method will delete untagged images, that is those which are not named. It
handles if the image tag is actually a manifest, which points to images that look otherwise
untagged.
"""
def _clean_untagged_manifest():
"""
Handles the deletion of untagged images, but where the package is a manifest, ie a multi
arch image, which means some "untagged" images need to exist still.
Ok, bear with me, these are annoying.
Our images are multi-arch, so the manifest is more like a pointer to a sha256 digest.
These images are untagged, but pointed to, and so should not be removed (or every pull fails).
So for each image getting kept, parse the manifest to find the digest(s) it points to. Then
remove those from the list of untagged images. The final result is the untagged, not pointed to
version which should be safe to remove.
Example:
Tag: ghcr.io/paperless-ngx/paperless-ngx:1.7.1 refers to
amd64: sha256:b9ed4f8753bbf5146547671052d7e91f68cdfc9ef049d06690b2bc866fec2690
armv7: sha256:81605222df4ba4605a2ba4893276e5d08c511231ead1d5da061410e1bbec05c3
arm64: sha256:374cd68db40734b844705bfc38faae84cc4182371de4bebd533a9a365d5e8f3b
each of which appears as untagged image, but isn't really.
So from the list of untagged packages, remove those digests. Once all tags which
are being kept are checked, the remaining untagged packages are actually untagged
with no referrals in a manifest to them.
"""
# Simplify the untagged data, mapping name (which is a digest) to the version
# At the moment, these are the images which APPEAR untagged.
untagged_versions = {}
for x in self.all_package_versions:
if x.untagged:
untagged_versions[x.name] = x
skips = 0
# Parse manifests to locate digests pointed to
for tag in sorted(self.tags_to_keep):
full_name = f"ghcr.io/{self.repo_owner}/{self.package_name}:{tag}"
logger.info(f"Checking manifest for {full_name}")
try:
proc = subprocess.run(
[
shutil.which("docker"),
"manifest",
"inspect",
full_name,
],
capture_output=True,
)
manifest_list = json.loads(proc.stdout)
for manifest_data in manifest_list["manifests"]:
manifest = DockerManifest2(manifest_data)
if manifest.digest in untagged_versions:
logger.info(
f"Skipping deletion of {manifest.digest},"
f" referred to by {full_name}"
f" for {manifest.platform}",
)
del untagged_versions[manifest.digest]
skips += 1
except Exception as err:
self.actually_delete = False
logger.exception(err)
return
logger.info(
f"Skipping deletion of {skips} packages referred to by a manifest",
)
# Delete the untagged and not pointed at packages
logger.info(f"Deleting untagged packages of {self.package_name}")
for to_delete_name in untagged_versions:
to_delete_version = untagged_versions[to_delete_name]
if self.actually_delete:
logger.info(
f"Deleting id {to_delete_version.id} named {to_delete_version.name}",
)
self.package_api.delete_package_version(
to_delete_version,
)
else:
logger.info(
f"Would delete {to_delete_name} (id {to_delete_version.id})",
)
def _clean_untagged_non_manifest():
"""
If the package is not a multi-arch manifest, images without tags are safe to delete.
"""
for package in self.all_package_versions:
if package.untagged:
if self.actually_delete:
logger.info(
f"Deleting id {package.id} named {package.name}",
)
self.package_api.delete_package_version(
package,
)
else:
logger.info(
f"Would delete {package.name} (id {package.id})",
)
else:
logger.info(
f"Not deleting tag {package.tags[0]} of package {self.package_name}",
)
logger.info("Beginning untagged image cleaning")
if is_manifest_image:
_clean_untagged_manifest()
else:
_clean_untagged_non_manifest()
def decide_what_tags_to_keep(self):
"""
This method holds the logic to delete what tags to keep and there fore
what tags to delete.
By default, any image with at least 1 tag will be kept
"""
# By default, keep anything which is tagged
self.tags_to_keep = list(set(self.all_pkgs_tags_to_version.keys()))
class MainImageTagsCleaner(RegistryTagsCleaner):
def decide_what_tags_to_keep(self):
"""
Overrides the default logic for deciding what images to keep. Images tagged as "feature-"
will be removed, if the corresponding branch no longer exists.
"""
# Default to everything gets kept still
super().decide_what_tags_to_keep()
# Locate the feature branches
feature_branches = {}
for branch in self.branch_api.get_branches(
repo=self.repo_name,
):
if branch.name.startswith("feature-"):
logger.debug(f"Found feature branch {branch.name}")
feature_branches[branch.name] = branch
logger.info(f"Located {len(feature_branches)} feature branches")
if not len(feature_branches):
# Our work here is done, delete nothing
return
# Filter to packages which are tagged with feature-*
packages_tagged_feature: List[ContainerPackage] = []
for package in self.all_package_versions:
if package.tag_matches("feature-"):
packages_tagged_feature.append(package)
# Map tags like "feature-xyz" to a ContainerPackage
feature_pkgs_tags_to_versions: Dict[str, ContainerPackage] = {}
for pkg in packages_tagged_feature:
for tag in pkg.tags:
feature_pkgs_tags_to_versions[tag] = pkg
logger.info(
f'Located {len(feature_pkgs_tags_to_versions)} versions of package {self.package_name} tagged "feature-"',
)
# All the feature tags minus all the feature branches leaves us feature tags
# with no corresponding branch
self.tags_to_delete = list(
set(feature_pkgs_tags_to_versions.keys()) - set(feature_branches.keys()),
)
# All the tags minus the set of going to be deleted tags leaves us the
# tags which will be kept around
self.tags_to_keep = list(
set(self.all_pkgs_tags_to_version.keys()) - set(self.tags_to_delete),
)
logger.info(
f"Located {len(self.tags_to_delete)} versions of package {self.package_name} to delete",
)
class LibraryTagsCleaner(RegistryTagsCleaner):
"""
Exists for the off change that someday, the installer library images
will need their own logic
"""
pass
def _main():
parser = ArgumentParser(
description="Using the GitHub API locate and optionally delete container"
" tags which no longer have an associated feature branch",
)
# Requires an affirmative command to actually do a delete
parser.add_argument(
"--delete",
action="store_true",
default=False,
help="If provided, actually delete the container tags",
)
# When a tagged image is updated, the previous version remains, but it no longer tagged
# Add this option to remove them as well
parser.add_argument(
"--untagged",
action="store_true",
default=False,
help="If provided, delete untagged containers as well",
)
# If given, the package is assumed to be a multi-arch manifest. Cache packages are
# not multi-arch, all other types are
parser.add_argument(
"--is-manifest",
action="store_true",
default=False,
help="If provided, the package is assumed to be a multi-arch manifest following schema v2",
)
# Allows configuration of log level for debugging
parser.add_argument(
"--loglevel",
default="info",
help="Configures the logging level",
)
# Get the name of the package being processed this round
parser.add_argument(
"package",
help="The package to process",
)
args = parser.parse_args()
logging.basicConfig(
level=get_log_level(args),
datefmt="%Y-%m-%d %H:%M:%S",
format="%(asctime)s %(levelname)-8s %(message)s",
)
# Must be provided in the environment
repo_owner: Final[str] = os.environ["GITHUB_REPOSITORY_OWNER"]
repo: Final[str] = os.environ["GITHUB_REPOSITORY"]
gh_token: Final[str] = os.environ["TOKEN"]
# Find all branches named feature-*
# Note: Only relevant to the main application, but simpler to
# leave in for all packages
with GithubBranchApi(gh_token) as branch_api:
with GithubContainerRegistryApi(gh_token, repo_owner) as container_api:
if args.package in {"paperless-ngx", "paperless-ngx/builder/cache/app"}:
cleaner = MainImageTagsCleaner(
args.package,
repo_owner,
repo,
container_api,
branch_api,
)
else:
cleaner = LibraryTagsCleaner(
args.package,
repo_owner,
repo,
container_api,
None,
)
# Set if actually doing a delete vs dry run
cleaner.actually_delete = args.delete
# Clean images with tags
cleaner.clean()
# Clean images which are untagged
cleaner.clean_untagged(args.is_manifest)
if __name__ == "__main__":
_main()

48
.github/scripts/common.py vendored Normal file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env python3
import logging
def get_image_tag(
repo_name: str,
pkg_name: str,
pkg_version: str,
) -> str:
"""
Returns a string representing the normal image for a given package
"""
return f"ghcr.io/{repo_name.lower()}/builder/{pkg_name}:{pkg_version}"
def get_cache_image_tag(
repo_name: str,
pkg_name: str,
pkg_version: str,
branch_name: str,
) -> str:
"""
Returns a string representing the expected image cache tag for a given package
Registry type caching is utilized for the builder images, to allow fast
rebuilds, generally almost instant for the same version
"""
return f"ghcr.io/{repo_name.lower()}/builder/cache/{pkg_name}:{pkg_version}"
def get_log_level(args) -> int:
"""
Returns a logging level, based
:param args:
:return:
"""
levels = {
"critical": logging.CRITICAL,
"error": logging.ERROR,
"warn": logging.WARNING,
"warning": logging.WARNING,
"info": logging.INFO,
"debug": logging.DEBUG,
}
level = levels.get(args.loglevel.lower())
if level is None:
level = logging.INFO
return level

92
.github/scripts/get-build-json.py vendored Executable file
View File

@@ -0,0 +1,92 @@
#!/usr/bin/env python3
"""
This is a helper script for the mutli-stage Docker image builder.
It provides a single point of configuration for package version control.
The output JSON object is used by the CI workflow to determine what versions
to build and pull into the final Docker image.
Python package information is obtained from the Pipfile.lock. As this is
kept updated by dependabot, it usually will need no further configuration.
The sole exception currently is pikepdf, which has a dependency on qpdf,
and is configured here to use the latest version of qpdf built by the workflow.
Other package version information is configured directly below, generally by
setting the version and Git information, if any.
"""
import argparse
import json
import os
from pathlib import Path
from typing import Final
from common import get_cache_image_tag
from common import get_image_tag
def _main():
parser = argparse.ArgumentParser(
description="Generate a JSON object of information required to build the given package, based on the Pipfile.lock",
)
parser.add_argument(
"package",
help="The name of the package to generate JSON for",
)
PIPFILE_LOCK_PATH: Final[Path] = Path("Pipfile.lock")
BUILD_CONFIG_PATH: Final[Path] = Path(".build-config.json")
# Read the main config file
build_json: Final = json.loads(BUILD_CONFIG_PATH.read_text())
# Read Pipfile.lock file
pipfile_data: Final = json.loads(PIPFILE_LOCK_PATH.read_text())
args: Final = parser.parse_args()
# Read from environment variables set by GitHub Actions
repo_name: Final[str] = os.environ["GITHUB_REPOSITORY"]
branch_name: Final[str] = os.environ["GITHUB_REF_NAME"]
# Default output values
version = None
extra_config = {}
if args.package in pipfile_data["default"]:
# Read the version from Pipfile.lock
pkg_data = pipfile_data["default"][args.package]
pkg_version = pkg_data["version"].split("==")[-1]
version = pkg_version
# Any extra/special values needed
if args.package == "pikepdf":
extra_config["qpdf_version"] = build_json["qpdf"]["version"]
elif args.package in build_json:
version = build_json[args.package]["version"]
else:
raise NotImplementedError(args.package)
# The JSON object we'll output
output = {
"name": args.package,
"version": version,
"image_tag": get_image_tag(repo_name, args.package, version),
"cache_tag": get_cache_image_tag(
repo_name,
args.package,
version,
branch_name,
),
}
# Add anything special a package may need
output.update(extra_config)
# Output the JSON info to stdout
print(json.dumps(output))
if __name__ == "__main__":
_main()

274
.github/scripts/github.py vendored Normal file
View File

@@ -0,0 +1,274 @@
#!/usr/bin/env python3
"""
This module contains some useful classes for interacting with the Github API.
The full documentation for the API can be found here: https://docs.github.com/en/rest
Mostly, this focusses on two areas, repo branches and repo packages, as the use case
is cleaning up container images which are no longer referred to.
"""
import functools
import logging
import re
import urllib.parse
from typing import Dict
from typing import List
from typing import Optional
import httpx
logger = logging.getLogger("github-api")
class _GithubApiBase:
"""
A base class for interacting with the Github API. It
will handle the session and setting authorization headers.
"""
def __init__(self, token: str) -> None:
self._token = token
self._client: Optional[httpx.Client] = None
def __enter__(self) -> "_GithubApiBase":
"""
Sets up the required headers for auth and response
type from the API
"""
self._client = httpx.Client()
self._client.headers.update(
{
"Accept": "application/vnd.github.v3+json",
"Authorization": f"token {self._token}",
},
)
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""
Ensures the authorization token is cleaned up no matter
the reason for the exit
"""
if "Accept" in self._client.headers:
del self._client.headers["Accept"]
if "Authorization" in self._client.headers:
del self._client.headers["Authorization"]
# Close the session as well
self._client.close()
self._client = None
def _read_all_pages(self, endpoint):
"""
Helper function to read all pages of an endpoint, utilizing the
next.url until exhausted. Assumes the endpoint returns a list
"""
internal_data = []
while True:
resp = self._client.get(endpoint)
if resp.status_code == 200:
internal_data += resp.json()
if "next" in resp.links:
endpoint = resp.links["next"]["url"]
else:
logger.debug("Exiting pagination loop")
break
else:
logger.warning(f"Request to {endpoint} return HTTP {resp.status_code}")
resp.raise_for_status()
return internal_data
class _EndpointResponse:
"""
For all endpoint JSON responses, store the full
response data, for ease of extending later, if need be.
"""
def __init__(self, data: Dict) -> None:
self._data = data
class GithubBranch(_EndpointResponse):
"""
Simple wrapper for a repository branch, only extracts name information
for now.
"""
def __init__(self, data: Dict) -> None:
super().__init__(data)
self.name = self._data["name"]
class GithubBranchApi(_GithubApiBase):
"""
Wrapper around branch API.
See https://docs.github.com/en/rest/branches/branches
"""
def __init__(self, token: str) -> None:
super().__init__(token)
self._ENDPOINT = "https://api.github.com/repos/{REPO}/branches"
def get_branches(self, repo: str) -> List[GithubBranch]:
"""
Returns all current branches of the given repository owned by the given
owner or organization.
"""
# The environment GITHUB_REPOSITORY already contains the owner in the correct location
endpoint = self._ENDPOINT.format(REPO=repo)
internal_data = self._read_all_pages(endpoint)
return [GithubBranch(branch) for branch in internal_data]
class ContainerPackage(_EndpointResponse):
"""
Data class wrapping the JSON response from the package related
endpoints
"""
def __init__(self, data: Dict):
super().__init__(data)
# This is a numerical ID, required for interactions with this
# specific package, including deletion of it or restoration
self.id: int = self._data["id"]
# A string name. This might be an actual name or it could be a
# digest string like "sha256:"
self.name: str = self._data["name"]
# URL to the package, including its ID, can be used for deletion
# or restoration without needing to build up a URL ourselves
self.url: str = self._data["url"]
# The list of tags applied to this image. Maybe an empty list
self.tags: List[str] = self._data["metadata"]["container"]["tags"]
@functools.cached_property
def untagged(self) -> bool:
"""
Returns True if the image has no tags applied to it, False otherwise
"""
return len(self.tags) == 0
@functools.cache
def tag_matches(self, pattern: str) -> bool:
"""
Returns True if the image has at least one tag which matches the given regex,
False otherwise
"""
for tag in self.tags:
if re.match(pattern, tag) is not None:
return True
return False
def __repr__(self):
return f"Package {self.name}"
class GithubContainerRegistryApi(_GithubApiBase):
"""
Class wrapper to deal with the Github packages API. This class only deals with
container type packages, the only type published by paperless-ngx.
"""
def __init__(self, token: str, owner_or_org: str) -> None:
super().__init__(token)
self._owner_or_org = owner_or_org
if self._owner_or_org == "paperless-ngx":
# https://docs.github.com/en/rest/packages#get-all-package-versions-for-a-package-owned-by-an-organization
self._PACKAGES_VERSIONS_ENDPOINT = "https://api.github.com/orgs/{ORG}/packages/{PACKAGE_TYPE}/{PACKAGE_NAME}/versions"
# https://docs.github.com/en/rest/packages#delete-package-version-for-an-organization
self._PACKAGE_VERSION_DELETE_ENDPOINT = "https://api.github.com/orgs/{ORG}/packages/{PACKAGE_TYPE}/{PACKAGE_NAME}/versions/{PACKAGE_VERSION_ID}"
else:
# https://docs.github.com/en/rest/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user
self._PACKAGES_VERSIONS_ENDPOINT = "https://api.github.com/user/packages/{PACKAGE_TYPE}/{PACKAGE_NAME}/versions"
# https://docs.github.com/en/rest/packages#delete-a-package-version-for-the-authenticated-user
self._PACKAGE_VERSION_DELETE_ENDPOINT = "https://api.github.com/user/packages/{PACKAGE_TYPE}/{PACKAGE_NAME}/versions/{PACKAGE_VERSION_ID}"
self._PACKAGE_VERSION_RESTORE_ENDPOINT = (
f"{self._PACKAGE_VERSION_DELETE_ENDPOINT}/restore"
)
def get_active_package_versions(
self,
package_name: str,
) -> List[ContainerPackage]:
"""
Returns all the versions of a given package (container images) from
the API
"""
package_type: str = "container"
# Need to quote this for slashes in the name
package_name = urllib.parse.quote(package_name, safe="")
endpoint = self._PACKAGES_VERSIONS_ENDPOINT.format(
ORG=self._owner_or_org,
PACKAGE_TYPE=package_type,
PACKAGE_NAME=package_name,
)
pkgs = []
for data in self._read_all_pages(endpoint):
pkgs.append(ContainerPackage(data))
return pkgs
def get_deleted_package_versions(
self,
package_name: str,
) -> List[ContainerPackage]:
package_type: str = "container"
# Need to quote this for slashes in the name
package_name = urllib.parse.quote(package_name, safe="")
endpoint = (
self._PACKAGES_VERSIONS_ENDPOINT.format(
ORG=self._owner_or_org,
PACKAGE_TYPE=package_type,
PACKAGE_NAME=package_name,
)
+ "?state=deleted"
)
pkgs = []
for data in self._read_all_pages(endpoint):
pkgs.append(ContainerPackage(data))
return pkgs
def delete_package_version(self, package_data: ContainerPackage):
"""
Deletes the given package version from the GHCR
"""
resp = self._client.delete(package_data.url)
if resp.status_code != 204:
logger.warning(
f"Request to delete {package_data.url} returned HTTP {resp.status_code}",
)
def restore_package_version(
self,
package_name: str,
package_data: ContainerPackage,
):
package_type: str = "container"
endpoint = self._PACKAGE_VERSION_RESTORE_ENDPOINT.format(
ORG=self._owner_or_org,
PACKAGE_TYPE=package_type,
PACKAGE_NAME=package_name,
PACKAGE_VERSION_ID=package_data.id,
)
resp = self._client.post(endpoint)
if resp.status_code != 204:
logger.warning(
f"Request to delete {endpoint} returned HTTP {resp.status_code}",
)

15
.github/stale.yml vendored
View File

@@ -1,18 +1,23 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
- fixpending
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: [cant-reproduce]
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
# See https://github.com/marketplace/stale for more info on the app
# and https://github.com/probot/stale for the configuration docs

View File

@@ -3,8 +3,10 @@ name: ci
on:
push:
tags:
- ngx-*
- beta-*
# https://semver.org/#spec-item-2
- 'v[0-9]+.[0-9]+.[0-9]+'
# https://semver.org/#spec-item-9
- 'v[0-9]+.[0-9]+.[0-9]+-beta.rc[0-9]+'
branches-ignore:
- 'translations**'
pull_request:
@@ -12,281 +14,442 @@ on:
- 'translations**'
jobs:
pre-commit:
name: Linting Checks
runs-on: ubuntu-latest
steps:
-
name: Checkout repository
uses: actions/checkout@v3
-
name: Install tools
uses: actions/setup-python@v4
with:
python-version: "3.9"
-
name: Check files
uses: pre-commit/action@v3.0.0
documentation:
name: "Build Documentation"
runs-on: ubuntu-20.04
needs:
- pre-commit
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
-
name: Install pipenv
run: |
pipx install pipenv==2022.10.12
-
name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: 3.9
-
name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
-
name: Persistent Github pip cache
uses: actions/cache@v2
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip3.8}
cache: "pipenv"
cache-dependency-path: 'Pipfile.lock'
-
name: Install dependencies
run: |
pip install --upgrade pipenv
pipenv install --system --dev --ignore-pipfile
pipenv sync --dev
-
name: List installed Python dependencies
run: |
pipenv run pip list
-
name: Make documentation
run: |
cd docs/
make html
pipenv run make html
-
name: Upload artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: documentation
path: docs/_build/html/
codestyle:
runs-on: ubuntu-20.04
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
-
name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
-
name: Persistent Github pip cache
uses: actions/cache@v2
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip${{ matrix.python-version }}
-
name: Install dependencies
run: |
pip install --upgrade pipenv
pipenv install --system --dev --ignore-pipfile
-
name: Codestyle
run: |
cd src/
pycodestyle --max-line-length=88 --ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203
codeformatting:
runs-on: ubuntu-20.04
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Run black
uses: psf/black@stable
with:
options: "--check --diff"
version: "22.1.0"
tests:
tests-backend:
name: "Tests (${{ matrix.python-version }})"
runs-on: ubuntu-20.04
needs:
- pre-commit
strategy:
matrix:
python-version: ['3.8', '3.9']
python-version: ['3.8', '3.9', '3.10']
fail-fast: false
services:
tika:
image: ghcr.io/paperless-ngx/tika:latest
ports:
- "9998:9998/tcp"
gotenberg:
image: docker.io/gotenberg/gotenberg:7.6
ports:
- "3000:3000/tcp"
env:
# Enable Tika end to end testing
TIKA_LIVE: 1
# Enable paperless_mail testing against real server
PAPERLESS_MAIL_TEST_HOST: ${{ secrets.TEST_MAIL_HOST }}
PAPERLESS_MAIL_TEST_USER: ${{ secrets.TEST_MAIL_USER }}
PAPERLESS_MAIL_TEST_PASSWD: ${{ secrets.TEST_MAIL_PASSWD }}
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
-
name: Install pipenv
run: |
pipx install pipenv==2022.10.12
-
name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: "${{ matrix.python-version }}"
cache: "pipenv"
cache-dependency-path: 'Pipfile.lock'
-
name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
-
name: Persistent Github pip cache
uses: actions/cache@v2
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip${{ matrix.python-version }}
-
name: Install dependencies
name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript optipng
pip install --upgrade pipenv
pipenv install --system --dev --ignore-pipfile
sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils
-
name: Install Python dependencies
run: |
pipenv sync --dev
-
name: List installed Python dependencies
run: |
pipenv run pip list
-
name: Tests
run: |
cd src/
pytest
pipenv run pytest -rfEp
-
name: Get changed files
id: changed-files-specific
uses: tj-actions/changed-files@v34
with:
files: |
src/**
-
name: List all changed files
run: |
for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do
echo "${file} was changed"
done
-
name: Publish coverage results
if: matrix.python-version == '3.9'
if: matrix.python-version == '3.9' && steps.changed-files-specific.outputs.any_changed == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# https://github.com/coveralls-clients/coveralls-python/issues/251
run: |
cd src/
coveralls --service=github
pipenv run coveralls --service=github
tests-frontend:
name: "Tests Frontend"
runs-on: ubuntu-20.04
needs:
- pre-commit
strategy:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v3
-
name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: cd src-ui && npm ci
- run: cd src-ui && npm run test
- run: cd src-ui && npm run e2e:ci
prepare-docker-build:
name: Prepare Docker Pipeline Data
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/beta' || contains(github.ref, 'beta.rc') || startsWith(github.ref, 'refs/tags/v'))
runs-on: ubuntu-20.04
# If the push triggered the installer library workflow, wait for it to
# complete here. This ensures the required versions for the final
# image have been built, while not waiting at all if the versions haven't changed
concurrency:
group: build-installer-library
cancel-in-progress: false
needs:
- documentation
- tests-backend
- tests-frontend
steps:
-
name: Set ghcr repository name
id: set-ghcr-repository
run: |
ghcr_name=$(echo "${GITHUB_REPOSITORY}" | awk '{ print tolower($0) }')
echo "repository=${ghcr_name}" >> $GITHUB_OUTPUT
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
-
name: Setup qpdf image
id: qpdf-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py qpdf)
echo ${build_json}
echo "qpdf-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup psycopg2 image
id: psycopg2-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py psycopg2)
echo ${build_json}
echo "psycopg2-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup pikepdf image
id: pikepdf-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py pikepdf)
echo ${build_json}
echo "pikepdf-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup jbig2enc image
id: jbig2enc-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py jbig2enc)
echo ${build_json}
echo "jbig2enc-json=${build_json}" >> $GITHUB_OUTPUT
outputs:
ghcr-repository: ${{ steps.set-ghcr-repository.outputs.repository }}
qpdf-json: ${{ steps.qpdf-setup.outputs.qpdf-json }}
pikepdf-json: ${{ steps.pikepdf-setup.outputs.pikepdf-json }}
psycopg2-json: ${{ steps.psycopg2-setup.outputs.psycopg2-json }}
jbig2enc-json: ${{ steps.jbig2enc-setup.outputs.jbig2enc-json}}
# build and push image to docker hub.
build-docker-image:
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/beta' || startsWith(github.ref, 'refs/tags/ngx-') || startsWith(github.ref, 'refs/tags/beta-'))
runs-on: ubuntu-latest
needs: [tests, codeformatting, codestyle]
runs-on: ubuntu-20.04
concurrency:
group: ${{ github.workflow }}-build-docker-image-${{ github.ref_name }}
cancel-in-progress: true
needs:
- prepare-docker-build
steps:
-
name: Prepare
id: prepare
name: Check pushing to Docker Hub
id: docker-hub
# Only push to Dockerhub from the main repo AND the ref is either:
# main
# dev
# beta
# a tag
# Otherwise forks would require a Docker Hub account and secrets setup
run: |
IMAGE_NAME=ghcr.io/${{ github.repository }}
if [[ $GITHUB_REF == refs/tags/ngx-* ]]; then
TAGS=${IMAGE_NAME}:${GITHUB_REF#refs/tags/ngx-},${IMAGE_NAME}:latest
INSPECT_TAG=${IMAGE_NAME}:latest
elif [[ $GITHUB_REF == refs/tags/beta-* ]]; then
TAGS=${IMAGE_NAME}:beta
INSPECT_TAG=${TAGS}
elif [[ $GITHUB_REF == refs/heads/* ]]; then
TAGS=${IMAGE_NAME}:${GITHUB_REF#refs/heads/}
INSPECT_TAG=${TAGS}
if [[ ${{ needs.prepare-docker-build.outputs.ghcr-repository }} == "paperless-ngx/paperless-ngx" && ( ${{ github.ref_name }} == "main" || ${{ github.ref_name }} == "dev" || ${{ github.ref_name }} == "beta" || ${{ startsWith(github.ref, 'refs/tags/v') }} == "true" ) ]] ; then
echo "Enabling DockerHub image push"
echo "enable=true" >> $GITHUB_OUTPUT
else
exit 1
echo "Not pushing to DockerHub"
echo "enable=false" >> $GITHUB_OUTPUT
fi
echo ::set-output name=tags::${TAGS}
echo ::set-output name=inspect_tag::${INSPECT_TAG}
-
name: Gather Docker metadata
id: docker-meta
uses: docker/metadata-action@v4
with:
images: |
ghcr.io/${{ needs.prepare-docker-build.outputs.ghcr-repository }}
name=paperlessngx/paperless-ngx,enable=${{ steps.docker-hub.outputs.enable }}
tags: |
# Tag branches with branch name
type=ref,event=branch
# Process semver tags
# For a tag x.y.z or vX.Y.Z, output an x.y.z and x.y image tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v2
-
name: Login to Github Container Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Login to Docker Hub
uses: docker/login-action@v2
# Don't attempt to login is not pushing to Docker Hub
if: steps.docker-hub.outputs.enable == 'true'
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm/v7,linux/arm64
push: true
tags: ${{ steps.prepare.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker-meta.outputs.tags }}
labels: ${{ steps.docker-meta.outputs.labels }}
build-args: |
JBIG2ENC_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.jbig2enc-json).version }}
QPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.qpdf-json).version }}
PIKEPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).version }}
PSYCOPG2_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).version }}
# Get cache layers from this branch, then dev, then main
# This allows new branches to get at least some cache benefits, generally from dev
cache-from: |
type=registry,ref=ghcr.io/${{ needs.prepare-docker-build.outputs.ghcr-repository }}/builder/cache/app:${{ github.ref_name }}
type=registry,ref=ghcr.io/${{ needs.prepare-docker-build.outputs.ghcr-repository }}/builder/cache/app:dev
type=registry,ref=ghcr.io/${{ needs.prepare-docker-build.outputs.ghcr-repository }}/builder/cache/app:main
cache-to: |
type=registry,mode=max,ref=ghcr.io/${{ needs.prepare-docker-build.outputs.ghcr-repository }}/builder/cache/app:${{ github.ref_name }}
-
name: Inspect image
run: |
docker buildx imagetools inspect ${{ steps.prepare.outputs.inspect_tag }}
docker buildx imagetools inspect ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }}
-
name: Export frontend artifact from docker
run: |
docker run -d --name frontend-extract ${{ steps.prepare.outputs.tags }}
docker create --name frontend-extract ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }}
docker cp frontend-extract:/usr/src/paperless/src/documents/static/frontend src/documents/static/frontend/
-
name: Upload frontend artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: frontend-compiled
path: src/documents/static/frontend/
build-release:
needs: [build-docker-image, documentation, tests, codeformatting, codestyle]
needs:
- build-docker-image
runs-on: ubuntu-20.04
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
-
name: Install pipenv
run: |
pip3 install --upgrade pip setuptools wheel pipx
pipx install pipenv
-
name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: 3.9
cache: "pipenv"
cache-dependency-path: 'Pipfile.lock'
-
name: Install dependencies
name: Install Python dependencies
run: |
pipenv sync --dev
-
name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -qq --no-install-recommends gettext liblept5
pip3 install --upgrade pip setuptools wheel
pip3 install -r requirements.txt
-
name: Download frontend artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: frontend-compiled
path: src/documents/static/frontend/
-
name: Download documentation artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: documentation
path: docs/_build/html/
-
name: Generate requirements file
run: |
pipenv requirements > requirements.txt
-
name: Compile messages
run: |
cd src/
pipenv run python3 manage.py compilemessages
-
name: Collect static files
run: |
cd src/
pipenv run python3 manage.py collectstatic --no-input
-
name: Move files
run: |
mkdir dist
mkdir dist/paperless-ngx
mkdir dist/paperless-ngx/scripts
cp .dockerignore .env Dockerfile Pipfile Pipfile.lock LICENSE README.md requirements.txt dist/paperless-ngx/
cp .dockerignore .env Dockerfile Pipfile Pipfile.lock requirements.txt LICENSE README.md dist/paperless-ngx/
cp paperless.conf.example dist/paperless-ngx/paperless.conf
cp gunicorn.conf.py dist/paperless-ngx/gunicorn.conf.py
cp docker/ dist/paperless-ngx/docker -r
cp -r docker/ dist/paperless-ngx/docker
cp scripts/*.service scripts/*.sh dist/paperless-ngx/scripts/
cp src/ dist/paperless-ngx/src -r
cp docs/_build/html/ dist/paperless-ngx/docs -r
-
name: Compile messages
run: |
cd dist/paperless-ngx/src
python3 manage.py compilemessages
-
name: Collect static files
run: |
cd dist/paperless-ngx/src
python3 manage.py collectstatic --no-input
cp -r src/ dist/paperless-ngx/src
cp -r docs/_build/html/ dist/paperless-ngx/docs
mv static dist/paperless-ngx
-
name: Make release package
run: |
cd dist
find . -name __pycache__ | xargs rm -r
tar -cJf paperless-ngx.tar.xz paperless-ngx/
-
name: Upload release artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: release
path: dist/paperless-ngx.tar.xz
publish-release:
runs-on: ubuntu-latest
needs: build-release
if: contains(github.ref, 'refs/tags/ngx-') || contains(github.ref, 'refs/tags/beta-')
runs-on: ubuntu-20.04
outputs:
prerelease: ${{ steps.get_version.outputs.prerelease }}
changelog: ${{ steps.create-release.outputs.body }}
version: ${{ steps.get_version.outputs.version }}
needs:
- build-release
if: github.ref_type == 'tag' && (startsWith(github.ref_name, 'v') || contains(github.ref_name, '-beta.rc'))
steps:
-
name: Download release artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: release
path: ./
@@ -294,26 +457,24 @@ jobs:
name: Get version
id: get_version
run: |
if [[ $GITHUB_REF == refs/tags/ngx-* ]]; then
echo ::set-output name=version::${GITHUB_REF#refs/tags/ngx-}
echo ::set-output name=prerelease::false
elif [[ $GITHUB_REF == refs/tags/beta-* ]]; then
echo ::set-output name=version::${GITHUB_REF#refs/tags/beta-}
echo ::set-output name=prerelease::true
echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT
if [[ ${{ contains(github.ref_name, '-beta.rc') }} == 'true' ]]; then
echo "prerelease=true" >> $GITHUB_OUTPUT
else
echo "prerelease=false" >> $GITHUB_OUTPUT
fi
-
name: Create release
id: create_release
uses: actions/create-release@v1
name: Create Release and Changelog
id: create-release
uses: paperless-ngx/release-drafter@master
with:
name: Paperless-ngx ${{ steps.get_version.outputs.version }}
tag: ${{ steps.get_version.outputs.version }}
version: ${{ steps.get_version.outputs.version }}
prerelease: ${{ steps.get_version.outputs.prerelease }}
publish: true # ensures release is not marked as draft
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ngx-${{ steps.get_version.outputs.version }}
release_name: Paperless-ngx ${{ steps.get_version.outputs.version }}
draft: false
prerelease: ${{ steps.get_version.outputs.prerelease }}
body: |
For a complete list of changes, see the changelog at https://paperless-ngx.readthedocs.io/en/latest/changelog.html.
-
name: Upload release archive
id: upload-release-asset
@@ -321,7 +482,69 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./paperless-ngx.tar.xz
asset_name: paperless-ngx-${{ steps.get_version.outputs.version }}.tar.xz
asset_content_type: application/x-xz
asset_content_type: application/x-xz
append-changelog:
runs-on: ubuntu-20.04
needs:
- publish-release
if: needs.publish-release.outputs.prerelease == 'false'
steps:
-
name: Checkout
uses: actions/checkout@v3
with:
ref: main
-
name: Install pipenv
run: |
pip3 install --upgrade pip setuptools wheel pipx
pipx install pipenv
-
name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
cache: "pipenv"
cache-dependency-path: 'Pipfile.lock'
-
name: Append Changelog to docs
id: append-Changelog
working-directory: docs
run: |
git branch ${{ needs.publish-release.outputs.version }}-changelog
git checkout ${{ needs.publish-release.outputs.version }}-changelog
echo -e "# Changelog\n\n${{ needs.publish-release.outputs.changelog }}\n" > changelog-new.md
echo "Manually linking usernames"
sed -i -r 's|@(.+?) \(\[#|[@\1](https://github.com/\1) ([#|ig' changelog-new.md
CURRENT_CHANGELOG=`tail --lines +2 changelog.md`
echo -e "$CURRENT_CHANGELOG" >> changelog-new.md
mv changelog-new.md changelog.md
pipenv run pre-commit run --files changelog.md
git config --global user.name "github-actions"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -am "Changelog ${{ needs.publish-release.outputs.version }} - GHA"
git push origin ${{ needs.publish-release.outputs.version }}-changelog
-
name: Create Pull Request
uses: actions/github-script@v6
with:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.create({
title: '[Documentation] Add ${{ needs.publish-release.outputs.version }} changelog',
owner,
repo,
head: '${{ needs.publish-release.outputs.version }}-changelog',
base: 'main',
body: 'This PR is auto-generated by CI.'
});
github.rest.issues.addLabels({
owner,
repo,
issue_number: result.data.number,
labels: ['documentation']
});

95
.github/workflows/cleanup-tags.yml vendored Normal file
View File

@@ -0,0 +1,95 @@
# This workflow runs on certain conditions to check for and potentially
# delete container images from the GHCR which no longer have an associated
# code branch.
# Requires a PAT with the correct scope set in the secrets
name: Cleanup Image Tags
on:
schedule:
- cron: '0 0 * * SAT'
delete:
pull_request:
types:
- closed
push:
paths:
- ".github/workflows/cleanup-tags.yml"
- ".github/scripts/cleanup-tags.py"
- ".github/scripts/github.py"
- ".github/scripts/common.py"
concurrency:
group: registry-tags-cleanup
cancel-in-progress: false
jobs:
cleanup-images:
name: Cleanup Image Tags for ${{ matrix.primary-name }}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- primary-name: "paperless-ngx"
cache-name: "paperless-ngx/builder/cache/app"
- primary-name: "paperless-ngx/builder/qpdf"
cache-name: "paperless-ngx/builder/cache/qpdf"
- primary-name: "paperless-ngx/builder/pikepdf"
cache-name: "paperless-ngx/builder/cache/pikepdf"
- primary-name: "paperless-ngx/builder/jbig2enc"
cache-name: "paperless-ngx/builder/cache/jbig2enc"
- primary-name: "paperless-ngx/builder/psycopg2"
cache-name: "paperless-ngx/builder/cache/psycopg2"
env:
# Requires a personal access token with the OAuth scope delete:packages
TOKEN: ${{ secrets.GHA_CONTAINER_DELETE_TOKEN }}
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Login to Github Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
-
name: Install httpx
run: |
python -m pip install httpx
#
# Clean up primary package
#
-
name: Cleanup for package "${{ matrix.primary-name }}"
if: "${{ env.TOKEN != '' }}"
run: |
python ${GITHUB_WORKSPACE}/.github/scripts/cleanup-tags.py --untagged --is-manifest --delete "${{ matrix.primary-name }}"
#
# Clean up registry cache package
#
-
name: Cleanup for package "${{ matrix.cache-name }}"
if: "${{ env.TOKEN != '' }}"
run: |
python ${GITHUB_WORKSPACE}/.github/scripts/cleanup-tags.py --untagged --delete "${{ matrix.cache-name }}"
#
# Verify tags which are left still pull
#
-
name: Check all tags still pull
run: |
ghcr_name=$(echo "ghcr.io/${GITHUB_REPOSITORY_OWNER}/${{ matrix.primary-name }}" | awk '{ print tolower($0) }')
echo "Pulling all tags of ${ghcr_name}"
docker pull --quiet --all-tags ${ghcr_name}
docker image list

View File

@@ -38,11 +38,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -51,4 +51,4 @@ jobs:
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2

170
.github/workflows/installer-library.yml vendored Normal file
View File

@@ -0,0 +1,170 @@
# This workflow will run to update the installer library of
# Docker images. These are the images which provide updated wheels
# .deb installation packages or maybe just some compiled library
name: Build Image Library
on:
push:
# Must match one of these branches AND one of the paths
# to be triggered
branches:
- "main"
- "dev"
- "library-*"
- "feature-*"
paths:
# Trigger the workflow if a Dockerfile changed
- "docker-builders/**"
# Trigger if a package was updated
- ".build-config.json"
- "Pipfile.lock"
# Also trigger on workflow changes related to the library
- ".github/workflows/installer-library.yml"
- ".github/workflows/reusable-workflow-builder.yml"
- ".github/scripts/**"
# Set a workflow level concurrency group so primary workflow
# can wait for this to complete if needed
# DO NOT CHANGE without updating main workflow group
concurrency:
group: build-installer-library
cancel-in-progress: false
jobs:
prepare-docker-build:
name: Prepare Docker Image Version Data
runs-on: ubuntu-20.04
steps:
-
name: Set ghcr repository name
id: set-ghcr-repository
run: |
ghcr_name=$(echo "${GITHUB_REPOSITORY}" | awk '{ print tolower($0) }')
echo "repository=${ghcr_name}" >> $GITHUB_OUTPUT
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
-
name: Install jq
run: |
sudo apt-get update
sudo apt-get install jq
-
name: Setup qpdf image
id: qpdf-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py qpdf)
echo ${build_json}
echo "qpdf-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup psycopg2 image
id: psycopg2-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py psycopg2)
echo ${build_json}
echo "psycopg2-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup pikepdf image
id: pikepdf-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py pikepdf)
echo ${build_json}
echo "pikepdf-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup jbig2enc image
id: jbig2enc-setup
run: |
build_json=$(python ${GITHUB_WORKSPACE}/.github/scripts/get-build-json.py jbig2enc)
echo ${build_json}
echo "jbig2enc-json=${build_json}" >> $GITHUB_OUTPUT
-
name: Setup other versions
id: cache-bust-setup
run: |
pillow_version=$(jq ".default.pillow.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
lxml_version=$(jq ".default.lxml.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
echo "Pillow is ${pillow_version}"
echo "lxml is ${lxml_version}"
echo "pillow-version=${pillow_version}" >> $GITHUB_OUTPUT
echo "lxml-version=${lxml_version}" >> $GITHUB_OUTPUT
outputs:
ghcr-repository: ${{ steps.set-ghcr-repository.outputs.repository }}
qpdf-json: ${{ steps.qpdf-setup.outputs.qpdf-json }}
pikepdf-json: ${{ steps.pikepdf-setup.outputs.pikepdf-json }}
psycopg2-json: ${{ steps.psycopg2-setup.outputs.psycopg2-json }}
jbig2enc-json: ${{ steps.jbig2enc-setup.outputs.jbig2enc-json }}
pillow-version: ${{ steps.cache-bust-setup.outputs.pillow-version }}
lxml-version: ${{ steps.cache-bust-setup.outputs.lxml-version }}
build-qpdf-debs:
name: qpdf
needs:
- prepare-docker-build
uses: ./.github/workflows/reusable-workflow-builder.yml
with:
dockerfile: ./docker-builders/Dockerfile.qpdf
build-json: ${{ needs.prepare-docker-build.outputs.qpdf-json }}
build-args: |
QPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.qpdf-json).version }}
build-jbig2enc:
name: jbig2enc
needs:
- prepare-docker-build
uses: ./.github/workflows/reusable-workflow-builder.yml
with:
dockerfile: ./docker-builders/Dockerfile.jbig2enc
build-json: ${{ needs.prepare-docker-build.outputs.jbig2enc-json }}
build-args: |
JBIG2ENC_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.jbig2enc-json).version }}
build-psycopg2-wheel:
name: psycopg2
needs:
- prepare-docker-build
uses: ./.github/workflows/reusable-workflow-builder.yml
with:
dockerfile: ./docker-builders/Dockerfile.psycopg2
build-json: ${{ needs.prepare-docker-build.outputs.psycopg2-json }}
build-args: |
PSYCOPG2_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.psycopg2-json).version }}
build-pikepdf-wheel:
name: pikepdf
needs:
- prepare-docker-build
- build-qpdf-debs
uses: ./.github/workflows/reusable-workflow-builder.yml
with:
dockerfile: ./docker-builders/Dockerfile.pikepdf
build-json: ${{ needs.prepare-docker-build.outputs.pikepdf-json }}
build-args: |
REPO=${{ needs.prepare-docker-build.outputs.ghcr-repository }}
QPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.qpdf-json).version }}
PIKEPDF_VERSION=${{ fromJSON(needs.prepare-docker-build.outputs.pikepdf-json).version }}
PILLOW_VERSION=${{ needs.prepare-docker-build.outputs.pillow-version }}
LXML_VERSION=${{ needs.prepare-docker-build.outputs.lxml-version }}

57
.github/workflows/project-actions.yml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: Project Automations
on:
issues:
types:
- opened
- reopened
pull_request_target: #_target allows access to secrets
types:
- opened
- reopened
branches:
- main
- dev
permissions:
contents: read
env:
todo: Todo
done: Done
in_progress: In Progress
jobs:
issue_opened_or_reopened:
name: issue_opened_or_reopened
runs-on: ubuntu-latest
if: github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened')
steps:
- name: Add issue to project and set status to ${{ env.todo }}
uses: leonsteinhaeuser/project-beta-automations@v2.0.1
with:
gh_token: ${{ secrets.GH_TOKEN }}
organization: paperless-ngx
project_id: 2
resource_node_id: ${{ github.event.issue.node_id }}
status_value: ${{ env.todo }} # Target status
pr_opened_or_reopened:
name: pr_opened_or_reopened
runs-on: ubuntu-latest
permissions:
# write permission is required for autolabeler
pull-requests: write
if: github.event_name == 'pull_request_target' && (github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request.user.login != 'dependabot'
steps:
- name: Add PR to project and set status to "Needs Review"
uses: leonsteinhaeuser/project-beta-automations@v2.0.1
with:
gh_token: ${{ secrets.GH_TOKEN }}
organization: paperless-ngx
project_id: 2
resource_node_id: ${{ github.event.pull_request.node_id }}
status_value: "Needs Review" # Target status
- name: Label PR with release-drafter
uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,53 @@
name: Reusable Image Builder
on:
workflow_call:
inputs:
dockerfile:
required: true
type: string
build-json:
required: true
type: string
build-args:
required: false
default: ""
type: string
concurrency:
group: ${{ github.workflow }}-${{ fromJSON(inputs.build-json).name }}-${{ fromJSON(inputs.build-json).version }}
cancel-in-progress: false
jobs:
build-image:
name: Build ${{ fromJSON(inputs.build-json).name }} @ ${{ fromJSON(inputs.build-json).version }}
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Login to Github Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Build ${{ fromJSON(inputs.build-json).name }}
uses: docker/build-push-action@v3
with:
context: .
file: ${{ inputs.dockerfile }}
tags: ${{ fromJSON(inputs.build-json).image_tag }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
build-args: ${{ inputs.build-args }}
push: true
cache-from: type=registry,ref=${{ fromJSON(inputs.build-json).cache_tag }}
cache-to: type=registry,mode=max,ref=${{ fromJSON(inputs.build-json).cache_tag }}

14
.gitignore vendored
View File

@@ -61,10 +61,16 @@ target/
# PyCharm
.idea
# VS Code
.vscode
/src-ui/.vscode
/docs/.vscode
# Other stuff that doesn't belong
.virtualenv
virtualenv
/venv
.venv/
/docker-compose.env
/docker-compose.yml
@@ -81,8 +87,12 @@ scripts/nuke
/paperless.conf
/consume/
/export/
/src-ui/.vscode
# this is where the compiled frontend is moved to.
/src/documents/static/frontend/
/docs/.vscode/settings.json
# mac os
.DS_Store
# celery schedule file
celerybeat-schedule*

8
.hadolint.yml Normal file
View File

@@ -0,0 +1,8 @@
failure-threshold: warning
ignored:
# https://github.com/hadolint/hadolint/wiki/DL3008
- DL3008
# https://github.com/hadolint/hadolint/wiki/DL3013
- DL3013
# https://github.com/hadolint/hadolint/wiki/DL3003
- DL3003

87
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,87 @@
# This file configures pre-commit hooks.
# See https://pre-commit.com/ for general information
# See https://pre-commit.com/hooks.html for a listing of possible hooks
repos:
# General hooks
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-docstring-first
- id: check-json
exclude: "tsconfig.*json"
- id: check-yaml
- id: check-toml
- id: check-executables-have-shebangs
- id: end-of-file-fixer
exclude_types:
- svg
- pofile
exclude: "(^LICENSE$)"
- id: mixed-line-ending
args:
- "--fix=lf"
- id: trailing-whitespace
exclude_types:
- svg
- id: check-case-conflict
- id: detect-private-key
- repo: https://github.com/pre-commit/mirrors-prettier
rev: "v2.7.1"
hooks:
- id: prettier
types_or:
- javascript
- ts
- markdown
exclude: "(^Pipfile\\.lock$)"
# Python hooks
- repo: https://github.com/asottile/reorder_python_imports
rev: v3.9.0
hooks:
- id: reorder-python-imports
exclude: "(migrations)"
- repo: https://github.com/asottile/yesqa
rev: "v1.4.0"
hooks:
- id: yesqa
exclude: "(migrations)"
- repo: https://github.com/asottile/add-trailing-comma
rev: "v2.3.0"
hooks:
- id: add-trailing-comma
exclude: "(migrations)"
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8
files: ^src/
args:
- "--config=./src/setup.cfg"
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
- repo: https://github.com/asottile/pyupgrade
rev: v3.2.2
hooks:
- id: pyupgrade
exclude: "(migrations)"
args:
- "--py38-plus"
# Dockerfile hooks
- repo: https://github.com/AleksaC/hadolint-py
rev: v2.10.0
hooks:
- id: hadolint
# Shell script hooks
- repo: https://github.com/lovesegfault/beautysh
rev: v6.2.1
hooks:
- id: beautysh
args:
- "--tab"
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: "v0.8.0.4"
hooks:
- id: shellcheck

4
.prettierrc Normal file
View File

@@ -0,0 +1,4 @@
# https://prettier.io/docs/en/options.html#semicolons
semi: false
# https://prettier.io/docs/en/options.html#quotes
singleQuote: true

9
CODEOWNERS Normal file
View File

@@ -0,0 +1,9 @@
/.github/workflows/ @paperless-ngx/ci-cd
/docker/ @paperless-ngx/ci-cd
/scripts/ @paperless-ngx/ci-cd
/src-ui/ @paperless-ngx/frontend
/src/ @paperless-ngx/backend
Pipfile* @paperless-ngx/backend
*.py @paperless-ngx/backend

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
hello@paperless-ngx.com.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@@ -4,10 +4,10 @@ If you feel like contributing to the project, please do! Bug fixes and improveme
If you want to implement something big:
* Please start a discussion about that in the issues! Maybe something similar is already in development and we can make it happen together.
* When making additions to the project, consider if the majority of users will benefit from your change. If not, you're probably better of forking the project.
* Also consider if your change will get in the way of other users. A good change is a change that enhances the experience of some users who want that change and does not affect users who do not care about the change.
* Please see the [paperless-ngx merge process](#merging-prs) below.
- Please start a discussion about that in the issues! Maybe something similar is already in development and we can make it happen together.
- When making additions to the project, consider if the majority of users will benefit from your change. If not, you're probably better of forking the project.
- Also consider if your change will get in the way of other users. A good change is a change that enhances the experience of some users who want that change and does not affect users who do not care about the change.
- Please see the [paperless-ngx merge process](#merging-prs) below.
## Python
@@ -15,7 +15,7 @@ Paperless supports python 3.8 and 3.9. We format Python code with [Black](https:
## Branches
`master` always reflects the latest release. Apart from changes to the documentation or readme, absolutely no functional changes on this branch in between releases.
`main` always reflects the latest release. Apart from changes to the documentation or readme, absolutely no functional changes on this branch in between releases.
`dev` contains all changes that will be part of the next release. Use this branch to start making your changes.
@@ -27,6 +27,8 @@ Please format and test your code! I know it's a hassle, but it makes sure that y
To test your code, execute `pytest` in the src/ directory. This also generates a html coverage report, which you can use to see if you missed anything important during testing.
Before you can run `pytest`, ensure to [properly set up your local environment](https://paperless-ngx.readthedocs.io/en/latest/extending.html#initial-setup-and-first-start).
## More info:
... is available in the documentation. https://paperless-ngx.readthedocs.io/en/latest/extending.html
@@ -41,9 +43,9 @@ PRs deemed `non-trivial` will go through a stricter review process before being
Examples of `non-trivial` PRs might include:
* Additional features
* Large changes to many distinct files
* Breaking or depreciation of existing features
- Additional features
- Large changes to many distinct files
- Breaking or depreciation of existing features
Our community review process for `non-trivial` PRs is the following:
@@ -75,21 +77,56 @@ If a language has already been added, and you would like to contribute new trans
If you would like the project to be translated to another language, first head over to https://crwd.in/paperless-ngx to check if that language has already been enabled for translation.
If not, please request the language to be added by creating an issue on GitHub. The issue should contain:
* English name of the language (the localized name can be added on Crowdin).
* ISO language code. A list of those can be found here: https://support.crowdin.com/enterprise/language-codes/
* Date format commonly used for the language, e.g. dd/mm/yyyy, mm/dd/yyyy, etc.
- English name of the language (the localized name can be added on Crowdin).
- ISO language code. A list of those can be found here: https://support.crowdin.com/enterprise/language-codes/
- Date format commonly used for the language, e.g. dd/mm/yyyy, mm/dd/yyyy, etc.
After the language has been added and some translations have been made on Crowdin, the language needs to be enabled in the code.
Note that there is no need to manually add a .po of .xlf file as those will be automatically generated and imported from Crowdin.
The following files need to be changed:
* src-ui/angular.json (under the _projects/paperless-ui/i18n/locales_ JSON key)
* src/paperless/settings.py (in the _LANGUAGES_ array)
* src-ui/src/app/services/settings.service.ts (inside the _getLanguageOptions_ method)
* src-ui/src/app/app.module.ts (import locale from _angular/common/locales_ and call _registerLocaleData_)
- src-ui/angular.json (under the _projects/paperless-ui/i18n/locales_ JSON key)
- src/paperless/settings.py (in the _LANGUAGES_ array)
- src-ui/src/app/services/settings.service.ts (inside the _getLanguageOptions_ method)
- src-ui/src/app/app.module.ts (import locale from _angular/common/locales_ and call _registerLocaleData_)
Please add the language in the correct order, alphabetically by locale.
Note that _en-us_ needs to stay on top of the list, as it is the default project language
If you are familiar with Git, feel free to send a Pull Request with those changes.
If not, let us know in the issue you created for the language, so that another developer can make these changes.
# Organization Structure & Membership
Paperless-ngx is a community project. We do our best to delegate permission and responsibility among a team of people to ensure the longevity of the project.
## Structure
As of writing, there are 21 members in paperless-ngx. 4 of these people have complete administrative privileges to the repo:
- [@shamoon](https://github.com/shamoon)
- [@bauerj](https://github.com/bauerj)
- [@qcasey](https://github.com/qcasey)
- [@FrankStrieter](https://github.com/FrankStrieter)
There are 5 teams collaborating on specific tasks within paperless-ngx:
- @paperless-ngx/backend (Python / django)
- @paperless-ngx/frontend (JavaScript / Typescript)
- @paperless-ngx/ci-cd (GitHub Actions / Deployment)
- @paperless-ngx/issues (Issue triage)
- @paperless-ngx/test (General testing for larger PRs)
## Permissions
All team members are notified when mentioned or assigned to a relevant issue or pull request. Additionally, each team has slightly different access to paperless-ngx:
- The **test** team has no special permissions.
- The **issues** team has `triage` access. This means they can organize issues and pull requests.
- The **backend**, **frontend**, and **ci-cd** teams have `write` access. This means they can approve PRs and push code, containers, releases, and more.
## Joining
We are not overly strict with inviting people to the organization. If you have read the [team permissions](#permissions) and think having additional access would enhance your contributions, please reach out to an [admin](#structure) of the team.
The admins occasionally invite contributors directly if we believe having them on a team will accelerate their work.

View File

@@ -1,134 +1,255 @@
FROM node:16 AS compile-frontend
# syntax=docker/dockerfile:1.4
COPY . /src
# Pull the installer images from the library
# These are all built previously
# They provide either a .deb or .whl
ARG JBIG2ENC_VERSION
ARG QPDF_VERSION
ARG PIKEPDF_VERSION
ARG PSYCOPG2_VERSION
FROM ghcr.io/paperless-ngx/paperless-ngx/builder/jbig2enc:${JBIG2ENC_VERSION} as jbig2enc-builder
FROM ghcr.io/paperless-ngx/paperless-ngx/builder/qpdf:${QPDF_VERSION} as qpdf-builder
FROM ghcr.io/paperless-ngx/paperless-ngx/builder/pikepdf:${PIKEPDF_VERSION} as pikepdf-builder
FROM ghcr.io/paperless-ngx/paperless-ngx/builder/psycopg2:${PSYCOPG2_VERSION} as psycopg2-builder
FROM --platform=$BUILDPLATFORM node:16-bullseye-slim AS compile-frontend
# This stage compiles the frontend
# This stage runs once for the native platform, as the outputs are not
# dependent on target arch
# Inputs: None
COPY ./src-ui /src/src-ui
WORKDIR /src/src-ui
RUN npm update npm -g && npm install
RUN ./node_modules/.bin/ng build --configuration production
RUN set -eux \
&& npm update npm -g \
&& npm ci --omit=optional
RUN set -eux \
&& ./node_modules/.bin/ng build --configuration production
FROM --platform=$BUILDPLATFORM python:3.9-slim-bullseye as pipenv-base
FROM ubuntu:20.04 AS jbig2enc
# This stage generates the requirements.txt file using pipenv
# This stage runs once for the native platform, as the outputs are not
# dependent on target arch
# This way, pipenv dependencies are not left in the final image
# nor can pipenv mess up the final image somehow
# Inputs: None
WORKDIR /usr/src/jbig2enc
WORKDIR /usr/src/pipenv
RUN apt-get update && apt-get install -y --no-install-recommends build-essential automake libtool libleptonica-dev zlib1g-dev git ca-certificates
COPY Pipfile* ./
RUN git clone https://github.com/agl/jbig2enc .
RUN ./autogen.sh
RUN ./configure && make
RUN set -eux \
&& echo "Installing pipenv" \
&& python3 -m pip install --no-cache-dir --upgrade pipenv \
&& echo "Generating requirement.txt" \
&& pipenv requirements > requirements.txt
FROM python:3.9-slim-bullseye
# Binary dependencies
RUN apt-get update \
&& apt-get -y --no-install-recommends install \
# Basic dependencies
curl \
gnupg \
imagemagick \
gettext \
tzdata \
gosu \
# fonts for text file thumbnail generation
fonts-liberation \
# for Numpy
libatlas-base-dev \
libxslt1-dev \
# thumbnail size reduction
optipng \
libxml2 \
pngquant \
unpaper \
zlib1g \
ghostscript \
icc-profiles-free \
# Mime type detection
file \
libmagic-dev \
media-types \
# OCRmyPDF dependencies
liblept5 \
tesseract-ocr \
tesseract-ocr-eng \
tesseract-ocr-deu \
tesseract-ocr-fra \
tesseract-ocr-ita \
tesseract-ocr-spa \
&& rm -rf /var/lib/apt/lists/*
# copy jbig2enc
COPY --from=jbig2enc /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/
COPY --from=jbig2enc /usr/src/jbig2enc/src/jbig2 /usr/local/bin/
COPY --from=jbig2enc /usr/src/jbig2enc/src/*.h /usr/local/include/
WORKDIR /usr/src/paperless/src/
COPY requirements.txt ../
# Python dependencies
RUN apt-get update \
&& apt-get -y --no-install-recommends install \
build-essential \
libpq-dev \
git \
zlib1g-dev \
libjpeg62-turbo-dev \
&& if [ "$(uname -m)" = "armv7l" ] || [ "$(uname -m)" = "aarch64" ]; \
then echo "Building qpdf" \
&& mkdir -p /usr/src/qpdf \
&& cd /usr/src/qpdf \
&& git clone https://github.com/qpdf/qpdf.git . \
&& git checkout --quiet release-qpdf-10.6.2 \
&& ./configure \
&& make \
&& make install \
&& cd /usr/src/paperless/src/ \
&& rm -rf /usr/src/qpdf; \
else \
echo "Skipping qpdf build because pikepdf binary wheels are available."; \
fi \
&& python3 -m pip install --upgrade pip wheel \
&& python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor \
&& python3 -m pip install --default-timeout=1000 --no-cache-dir -r ../requirements.txt \
&& apt-get -y purge build-essential git zlib1g-dev libjpeg62-turbo-dev \
&& apt-get -y autoremove --purge \
&& rm -rf /var/lib/apt/lists/*
# setup docker-specific things
COPY docker/ ./docker/
RUN cd docker \
&& cp imagemagick-policy.xml /etc/ImageMagick-6/policy.xml \
&& mkdir /var/log/supervisord /var/run/supervisord \
&& cp supervisord.conf /etc/supervisord.conf \
&& cp docker-entrypoint.sh /sbin/docker-entrypoint.sh \
&& cp docker-prepare.sh /sbin/docker-prepare.sh \
&& chmod 755 /sbin/docker-entrypoint.sh \
&& chmod +x install_management_commands.sh \
&& ./install_management_commands.sh \
&& cd .. \
&& rm docker -rf
COPY gunicorn.conf.py ../
# copy app
COPY --from=compile-frontend /src/src/ ./
# add users, setup scripts
RUN addgroup --gid 1000 paperless \
&& useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \
&& chown -R paperless:paperless ../ \
&& gosu paperless python3 manage.py collectstatic --clear --no-input \
&& gosu paperless python3 manage.py compilemessages
VOLUME ["/usr/src/paperless/data", "/usr/src/paperless/media", "/usr/src/paperless/consume", "/usr/src/paperless/export"]
ENTRYPOINT ["/sbin/docker-entrypoint.sh"]
EXPOSE 8000
CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf"]
FROM python:3.9-slim-bullseye as main-app
LABEL org.opencontainers.image.authors="paperless-ngx team <hello@paperless-ngx.com>"
LABEL org.opencontainers.image.documentation="https://paperless-ngx.readthedocs.io/en/latest/"
LABEL org.opencontainers.image.source="https://github.com/paperless-ngx/paperless-ngx"
LABEL org.opencontainers.image.url="https://github.com/paperless-ngx/paperless-ngx"
LABEL org.opencontainers.image.licenses="GPL-3.0-only"
ARG DEBIAN_FRONTEND=noninteractive
#
# Begin installation and configuration
# Order the steps below from least often changed to most
#
# copy jbig2enc
# Basically will never change again
COPY --from=jbig2enc-builder /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/
COPY --from=jbig2enc-builder /usr/src/jbig2enc/src/jbig2 /usr/local/bin/
COPY --from=jbig2enc-builder /usr/src/jbig2enc/src/*.h /usr/local/include/
# Packages need for running
ARG RUNTIME_PACKAGES="\
curl \
file \
# fonts for text file thumbnail generation
fonts-liberation \
gettext \
ghostscript \
gnupg \
gosu \
icc-profiles-free \
imagemagick \
media-types \
liblept5 \
libpq5 \
libxml2 \
liblcms2-2 \
libtiff5 \
libxslt1.1 \
libfreetype6 \
libwebp6 \
libopenjp2-7 \
libimagequant0 \
libraqm0 \
libgnutls30 \
libjpeg62-turbo \
python3 \
python3-pip \
python3-setuptools \
postgresql-client \
mariadb-client \
# For Numpy
libatlas3-base \
# OCRmyPDF dependencies
tesseract-ocr \
tesseract-ocr-eng \
tesseract-ocr-deu \
tesseract-ocr-fra \
tesseract-ocr-ita \
tesseract-ocr-spa \
# Suggested for OCRmyPDF
pngquant \
# Suggested for pikepdf
jbig2dec \
tzdata \
unpaper \
# Mime type detection
zlib1g \
# Barcode splitter
libzbar0 \
poppler-utils"
# Install basic runtime packages.
# These change very infrequently
RUN set -eux \
echo "Installing system packages" \
&& apt-get update \
&& apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} \
&& rm -rf /var/lib/apt/lists/* \
&& echo "Installing supervisor" \
&& python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor==4.2.4
# Copy gunicorn config
# Changes very infrequently
WORKDIR /usr/src/paperless/
COPY gunicorn.conf.py .
# setup docker-specific things
# Use mounts to avoid copying installer files into the image
# These change sometimes, but rarely
WORKDIR /usr/src/paperless/src/docker/
COPY [ \
"docker/imagemagick-policy.xml", \
"docker/supervisord.conf", \
"docker/docker-entrypoint.sh", \
"docker/docker-prepare.sh", \
"docker/paperless_cmd.sh", \
"docker/wait-for-redis.py", \
"docker/management_script.sh", \
"docker/flower-conditional.sh", \
"docker/install_management_commands.sh", \
"/usr/src/paperless/src/docker/" \
]
RUN set -eux \
&& echo "Configuring ImageMagick" \
&& mv imagemagick-policy.xml /etc/ImageMagick-6/policy.xml \
&& echo "Configuring supervisord" \
&& mkdir /var/log/supervisord /var/run/supervisord \
&& mv supervisord.conf /etc/supervisord.conf \
&& echo "Setting up Docker scripts" \
&& mv docker-entrypoint.sh /sbin/docker-entrypoint.sh \
&& chmod 755 /sbin/docker-entrypoint.sh \
&& mv docker-prepare.sh /sbin/docker-prepare.sh \
&& chmod 755 /sbin/docker-prepare.sh \
&& mv wait-for-redis.py /sbin/wait-for-redis.py \
&& chmod 755 /sbin/wait-for-redis.py \
&& mv paperless_cmd.sh /usr/local/bin/paperless_cmd.sh \
&& chmod 755 /usr/local/bin/paperless_cmd.sh \
&& mv flower-conditional.sh /usr/local/bin/flower-conditional.sh \
&& chmod 755 /usr/local/bin/flower-conditional.sh \
&& echo "Installing managment commands" \
&& chmod +x install_management_commands.sh \
&& ./install_management_commands.sh
# Install the built packages from the installer library images
# Use mounts to avoid copying installer files into the image
# These change sometimes
RUN --mount=type=bind,from=qpdf-builder,target=/qpdf \
--mount=type=bind,from=psycopg2-builder,target=/psycopg2 \
--mount=type=bind,from=pikepdf-builder,target=/pikepdf \
set -eux \
&& echo "Installing qpdf" \
&& apt-get install --yes --no-install-recommends /qpdf/usr/src/qpdf/libqpdf29_*.deb \
&& apt-get install --yes --no-install-recommends /qpdf/usr/src/qpdf/qpdf_*.deb \
&& echo "Installing pikepdf and dependencies" \
&& python3 -m pip install --no-cache-dir /pikepdf/usr/src/wheels/pyparsing*.whl \
&& python3 -m pip install --no-cache-dir /pikepdf/usr/src/wheels/packaging*.whl \
&& python3 -m pip install --no-cache-dir /pikepdf/usr/src/wheels/lxml*.whl \
&& python3 -m pip install --no-cache-dir /pikepdf/usr/src/wheels/Pillow*.whl \
&& python3 -m pip install --no-cache-dir /pikepdf/usr/src/wheels/pikepdf*.whl \
&& python3 -m pip list \
&& echo "Installing psycopg2" \
&& python3 -m pip install --no-cache-dir /psycopg2/usr/src/wheels/psycopg2*.whl \
&& python3 -m pip list
WORKDIR /usr/src/paperless/src/
# Python dependencies
# Change pretty frequently
COPY --from=pipenv-base /usr/src/pipenv/requirements.txt ./
# Packages needed only for building a few quick Python
# dependencies
ARG BUILD_PACKAGES="\
build-essential \
git \
default-libmysqlclient-dev \
python3-dev"
RUN set -eux \
&& echo "Installing build system packages" \
&& apt-get update \
&& apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \
&& python3 -m pip install --no-cache-dir --upgrade wheel \
&& echo "Installing Python requirements" \
&& python3 -m pip install --default-timeout=1000 --no-cache-dir --requirement requirements.txt \
&& echo "Cleaning up image" \
&& apt-get -y purge ${BUILD_PACKAGES} \
&& apt-get -y autoremove --purge \
&& apt-get clean --yes \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/* \
&& rm -rf /var/tmp/* \
&& rm -rf /var/cache/apt/archives/* \
&& truncate -s 0 /var/log/*log
# copy backend
COPY ./src ./
# copy frontend
COPY --from=compile-frontend /src/src/documents/static/frontend/ ./documents/static/frontend/
# add users, setup scripts
RUN set -eux \
&& addgroup --gid 1000 paperless \
&& useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \
&& chown -R paperless:paperless ../ \
&& gosu paperless python3 manage.py collectstatic --clear --no-input \
&& gosu paperless python3 manage.py compilemessages
VOLUME ["/usr/src/paperless/data", \
"/usr/src/paperless/media", \
"/usr/src/paperless/consume", \
"/usr/src/paperless/export"]
ENTRYPOINT ["/sbin/docker-entrypoint.sh"]
EXPOSE 8000
CMD ["/usr/local/bin/paperless_cmd.sh"]

60
Pipfile
View File

@@ -9,48 +9,57 @@ verify_ssl = true
name = "piwheels"
[packages]
dateparser = "~=1.1.0"
django = "~=3.2"
dateparser = "~=1.1"
django = "~=4.1"
django-cors-headers = "*"
django-extensions = "*"
django-filter = "~=21.1"
django-q = "~=1.3.4"
djangorestframework = "~=3.13.1"
django-filter = "~=22.1"
djangorestframework = "~=3.14"
filelock = "*"
fuzzywuzzy = {extras = ["speedup"], version = "*"}
gunicorn = "*"
imap-tools = "*"
langdetect = "*"
numpy = "~=1.22.0"
pathvalidate = "*"
pillow = "~=9.0"
pikepdf = "~=5.0"
pillow = "~=9.3"
pikepdf = "*"
python-gnupg = "*"
python-dotenv = "*"
python-dateutil = "*"
python-magic = "*"
psycopg2-binary = "*"
redis = "*"
# Pinned because aarch64 wheels and updates cause warnings when loading the classifier model.
scikit-learn="==0.24.0"
whitenoise = "~=6.0.0"
watchdog = "~=2.1.0"
whoosh="~=2.7.4"
inotifyrecursive = "~=0.3.4"
ocrmypdf = "~=13.4.0"
psycopg2 = "*"
rapidfuzz = "*"
redis = {extras = ["hiredis"], version = "*"}
scikit-learn = "~=1.1"
# Pin this until piwheels is building 1.9 (see https://www.piwheels.org/project/scipy/)
scipy = "==1.8.1"
numpy = "*"
whitenoise = "~=6.2"
watchdog = "~=2.1"
whoosh="~=2.7"
inotifyrecursive = "~=0.3"
ocrmypdf = "~=14.0"
tqdm = "*"
tika = "*"
# TODO: This will sadly also install daphne+dependencies,
# which an ASGI server we don't need. Adds about 15MB image size.
channels = "~=3.0"
channels-redis = "*"
# Locked version until https://github.com/django/channels_redis/issues/332
# is resolved
channels-redis = "==3.4.1"
uvicorn = {extras = ["standard"], version = "*"}
concurrent-log-handler = "*"
# uvloop 0.15+ incompatible with python 3.6
uvloop = "~=0.16"
cryptography = "~=36.0.1"
"pdfminer.six" = "*"
"backports.zoneinfo" = "*"
"backports.zoneinfo" = {version = "*", markers = "python_version < '3.9'"}
"importlib-resources" = {version = "*", markers = "python_version < '3.9'"}
zipp = {version = "*", markers = "python_version < '3.9'"}
pyzbar = "*"
mysqlclient = "*"
celery = {extras = ["redis"], version = "*"}
django-celery-results = "*"
setproctitle = "*"
nltk = "*"
pdf2image = "*"
flower = "*"
[dev-packages]
coveralls = "*"
@@ -62,7 +71,10 @@ pytest-django = "*"
pytest-env = "*"
pytest-sugar = "*"
pytest-xdist = "*"
sphinx = "~=3.4.2"
sphinx = "~=5.3"
sphinx_rtd_theme = "*"
tox = "*"
black = "*"
pre-commit = "*"
sphinx-autobuild = "*"
myst-parser = "*"

2791
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
[![Crowdin](https://badges.crowdin.net/paperless-ngx/localized.svg)](https://crowdin.com/project/paperless-ngx)
[![Documentation Status](https://readthedocs.org/projects/paperless-ngx/badge/?version=latest)](https://paperless-ngx.readthedocs.io/en/latest/?badge=latest)
[![Coverage Status](https://coveralls.io/repos/github/paperless-ngx/paperless-ngx/badge.svg?branch=master)](https://coveralls.io/github/paperless-ngx/paperless-ngx?branch=master)
[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#paperless:adnidor.de)
[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/%23paperlessngx%3Amatrix.org)
<p align="center">
<img src="https://github.com/paperless-ngx/paperless-ngx/raw/main/resources/logo/web/png/Black%20logo%20-%20no%20background.png#gh-light-mode-only" width="50%" />
@@ -10,23 +10,23 @@
</p>
<!-- omit in toc -->
# Paperless-ngx
Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, *less paper*.
Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, _less paper_.
Paperless-ngx forked from [paperless-ng](https://github.com/jonaswinkler/paperless-ng) to continue the great work and distribute responsibility of supporting and advancing the project among a team of people. [Consider joining us!](#community-support) Discussion of this transition can be found in issues
[#1599](https://github.com/jonaswinkler/paperless-ng/issues/1599) and [#1632](https://github.com/jonaswinkler/paperless-ng/issues/1632).
A demo is available at [demo.paperless-ngx.com](https://demo.paperless-ngx.com) using login `demo` / `demo`. *Note: demo content is reset frequently and confidential information should not be uploaded.*
A demo is available at [demo.paperless-ngx.com](https://demo.paperless-ngx.com) using login `demo` / `demo`. _Note: demo content is reset frequently and confidential information should not be uploaded._
- [Features](#features)
- [Getting started](#getting-started)
- [Contributing](#contributing)
- [Community Support](#community-support)
- [Translation](#translation)
- [Feature Requests](#feature-requests)
- [Bugs](#bugs)
- [Community Support](#community-support)
- [Translation](#translation)
- [Feature Requests](#feature-requests)
- [Bugs](#bugs)
- [Affiliated Projects](#affiliated-projects)
- [Important Note](#important-note)
@@ -35,28 +35,28 @@ A demo is available at [demo.paperless-ngx.com](https://demo.paperless-ngx.com)
![Dashboard](https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docs/_static/screenshots/documents-wchrome.png#gh-light-mode-only)
![Dashboard](https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docs/_static/screenshots/documents-wchrome-dark.png#gh-dark-mode-only)
* Organize and index your scanned documents with tags, correspondents, types, and more.
* Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents.
* Supports PDF documents, images, plain text files, and Office documents (Word, Excel, Powerpoint, and LibreOffice equivalents).
* Office document support is optional and provided by Apache Tika (see [configuration](https://paperless-ngx.readthedocs.io/en/latest/configuration.html#tika-settings))
* Paperless stores your documents plain on disk. Filenames and folders are managed by paperless and their format can be configured freely.
* Single page application front end.
* Includes a dashboard that shows basic statistics and has document upload.
* Filtering by tags, correspondents, types, and more.
* Customizable views can be saved and displayed on the dashboard.
* Full text search helps you find what you need.
* Auto completion suggests relevant words from your documents.
* Results are sorted by relevance to your search query.
* Highlighting shows you which parts of the document matched the query.
* Searching for similar documents ("More like this")
* Email processing: Paperless adds documents from your email accounts.
* Configure multiple accounts and filters for each account.
* When adding documents from mail, paperless can move these mail to a new folder, mark them as read, flag them as important or delete them.
* Machine learning powered document matching.
* Paperless-ngx learns from your documents and will be able to automatically assign tags, correspondents and types to documents once you've stored a few documents in paperless.
* Optimized for multi core systems: Paperless-ngx consumes multiple documents in parallel.
* The integrated sanity checker makes sure that your document archive is in good health.
* [More screenshots are available in the documentation](https://paperless-ngx.readthedocs.io/en/latest/screenshots.html).
- Organize and index your scanned documents with tags, correspondents, types, and more.
- Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents.
- Supports PDF documents, images, plain text files, and Office documents (Word, Excel, Powerpoint, and LibreOffice equivalents).
- Office document support is optional and provided by Apache Tika (see [configuration](https://paperless-ngx.readthedocs.io/en/latest/configuration.html#tika-settings))
- Paperless stores your documents plain on disk. Filenames and folders are managed by paperless and their format can be configured freely.
- Single page application front end.
- Includes a dashboard that shows basic statistics and has document upload.
- Filtering by tags, correspondents, types, and more.
- Customizable views can be saved and displayed on the dashboard.
- Full text search helps you find what you need.
- Auto completion suggests relevant words from your documents.
- Results are sorted by relevance to your search query.
- Highlighting shows you which parts of the document matched the query.
- Searching for similar documents ("More like this")
- Email processing: Paperless adds documents from your email accounts.
- Configure multiple accounts and filters for each account.
- When adding documents from mail, paperless can move these mail to a new folder, mark them as read, flag them as important or delete them.
- Machine learning powered document matching.
- Paperless-ngx learns from your documents and will be able to automatically assign tags, correspondents and types to documents once you've stored a few documents in paperless.
- Optimized for multi core systems: Paperless-ngx consumes multiple documents in parallel.
- The integrated sanity checker makes sure that your document archive is in good health.
- [More screenshots are available in the documentation](https://paperless-ngx.readthedocs.io/en/latest/screenshots.html).
# Getting started
@@ -65,7 +65,7 @@ The easiest way to deploy paperless is docker-compose. The files in the [`/docke
If you'd like to jump right in, you can configure a docker-compose environment with our install script:
```bash
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/master/install-paperless-ngx.sh)"
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"
```
Alternatively, you can install the dependencies and setup apache and a database server yourself. The [documentation](https://paperless-ngx.readthedocs.io/en/latest/setup.html#installation) has a step by step guide on how to do it.
@@ -73,6 +73,7 @@ Alternatively, you can install the dependencies and setup apache and a database
Migrating from Paperless-ng is easy, just drop in the new docker image! See the [documentation on migrating](https://paperless-ngx.readthedocs.io/en/latest/setup.html#migrating-from-paperless-ng) for more details.
<!-- omit in toc -->
### Documentation
The documentation for Paperless-ngx is available on [ReadTheDocs](https://paperless-ngx.readthedocs.io/).
@@ -101,18 +102,19 @@ For bugs please [open an issue](https://github.com/paperless-ngx/paperless-ngx/i
Paperless has been around a while now, and people are starting to build stuff on top of it. If you're one of those people, we can add your project to this list:
* [Paperless App](https://github.com/bauerj/paperless_app): An Android/iOS app for Paperless-ngx. Also works with the original Paperless and Paperless-ngx.
* [Paperless Share](https://github.com/qcasey/paperless_share). Share any files from your Android application with paperless. Very simple, but works with all of the mobile scanning apps out there that allow you to share scanned documents.
* [Scan to Paperless](https://github.com/sbrunner/scan-to-paperless): Scan and prepare (crop, deskew, OCR, ...) your documents for Paperless.
- [Paperless App](https://github.com/bauerj/paperless_app): An Android/iOS app for Paperless-ngx. Also works with the original Paperless and Paperless-ng.
- [Paperless Share](https://github.com/qcasey/paperless_share). Share any files from your Android application with paperless. Very simple, but works with all of the mobile scanning apps out there that allow you to share scanned documents.
- [Scan to Paperless](https://github.com/sbrunner/scan-to-paperless): Scan and prepare (crop, deskew, OCR, ...) your documents for Paperless.
- [Paperless Mobile](https://github.com/astubenbord/paperless-mobile): A modern, feature rich mobile application for Paperless.
These projects also exist, but their status and compatibility with paperless-ngx is unknown.
* [paperless-cli](https://github.com/stgarf/paperless-cli): A golang command line binary to interact with a Paperless instance.
- [paperless-cli](https://github.com/stgarf/paperless-cli): A golang command line binary to interact with a Paperless instance.
This project also exists, but needs updates to be compatible with paperless-ngx.
* [Paperless Desktop](https://github.com/thomasbrueggemann/paperless-desktop): A desktop UI for your Paperless installation. Runs on Mac, Linux, and Windows.
Known issues on Mac: (Could not load reminders and documents)
- [Paperless Desktop](https://github.com/thomasbrueggemann/paperless-desktop): A desktop UI for your Paperless installation. Runs on Mac, Linux, and Windows.
Known issues on Mac: (Could not load reminders and documents)
# Important Note

47
build-docker-image.sh Executable file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
# Helper script for building the Docker image locally.
# Parses and provides the nessecary versions of other images to Docker
# before passing in the rest of script args.
# First Argument: The Dockerfile to build
# Other Arguments: Additional arguments to docker build
# Example Usage:
# ./build-docker-image.sh Dockerfile -t paperless-ngx:my-awesome-feature
set -eux
if ! command -v jq; then
echo "jq required"
exit 1
elif [ ! -f "$1" ]; then
echo "$1 is not a file, please provide the Dockerfile"
exit 1
fi
# Parse what we can from Pipfile.lock
pikepdf_version=$(jq ".default.pikepdf.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
psycopg2_version=$(jq ".default.psycopg2.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
pillow_version=$(jq ".default.pillow.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
lxml_version=$(jq ".default.lxml.version" Pipfile.lock | sed 's/=//g' | sed 's/"//g')
# Read this from the other config file
qpdf_version=$(jq ".qpdf.version" .build-config.json | sed 's/"//g')
jbig2enc_version=$(jq ".jbig2enc.version" .build-config.json | sed 's/"//g')
# Get the branch name (used for caching)
branch_name=$(git rev-parse --abbrev-ref HEAD)
# https://docs.docker.com/develop/develop-images/build_enhancements/
# Required to use cache-from
export DOCKER_BUILDKIT=1
docker build --file "$1" \
--progress=plain \
--cache-from ghcr.io/paperless-ngx/paperless-ngx/builder/cache/app:"${branch_name}" \
--cache-from ghcr.io/paperless-ngx/paperless-ngx/builder/cache/app:dev \
--build-arg JBIG2ENC_VERSION="${jbig2enc_version}" \
--build-arg QPDF_VERSION="${qpdf_version}" \
--build-arg PIKEPDF_VERSION="${pikepdf_version}" \
--build-arg PILLOW_VERSION="${pillow_version}" \
--build-arg LXML_VERSION="${lxml_version}" \
--build-arg PSYCOPG2_VERSION="${psycopg2_version}" "${@:2}" .

View File

@@ -0,0 +1,35 @@
# This Dockerfile compiles the jbig2enc library
# Inputs:
# - JBIG2ENC_VERSION - the Git tag to checkout and build
FROM debian:bullseye-slim as main
LABEL org.opencontainers.image.description="A intermediate image with jbig2enc built"
ARG DEBIAN_FRONTEND=noninteractive
ARG JBIG2ENC_VERSION
ARG BUILD_PACKAGES="\
build-essential \
automake \
libtool \
libleptonica-dev \
zlib1g-dev \
git \
ca-certificates"
WORKDIR /usr/src/jbig2enc
RUN set -eux \
&& echo "Installing build tools" \
&& apt-get update --quiet \
&& apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \
&& echo "Building jbig2enc" \
&& git clone --quiet --branch $JBIG2ENC_VERSION https://github.com/agl/jbig2enc . \
&& ./autogen.sh \
&& ./configure \
&& make \
&& echo "Cleaning up image" \
&& apt-get -y purge ${BUILD_PACKAGES} \
&& apt-get -y autoremove --purge \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,92 @@
# This Dockerfile builds the pikepdf wheel
# Inputs:
# - REPO - Docker repository to pull qpdf from
# - QPDF_VERSION - The image qpdf version to copy .deb files from
# - PIKEPDF_VERSION - Version of pikepdf to build wheel for
# Default to pulling from the main repo registry when manually building
ARG REPO="paperless-ngx/paperless-ngx"
ARG QPDF_VERSION
FROM ghcr.io/${REPO}/builder/qpdf:${QPDF_VERSION} as qpdf-builder
# This does nothing, except provide a name for a copy below
FROM python:3.9-slim-bullseye as main
LABEL org.opencontainers.image.description="A intermediate image with pikepdf wheel built"
ARG DEBIAN_FRONTEND=noninteractive
ARG PIKEPDF_VERSION
# These are not used, but will still bust the cache if one changes
# Otherwise, the main image will try to build thing (and fail)
ARG PILLOW_VERSION
ARG LXML_VERSION
ARG BUILD_PACKAGES="\
build-essential \
python3-dev \
python3-pip \
# qpdf requirement - https://github.com/qpdf/qpdf#crypto-providers
libgnutls28-dev \
# lxml requrements - https://lxml.de/installation.html
libxml2-dev \
libxslt1-dev \
# Pillow requirements - https://pillow.readthedocs.io/en/stable/installation.html#external-libraries
# JPEG functionality
libjpeg62-turbo-dev \
# conpressed PNG
zlib1g-dev \
# compressed TIFF
libtiff-dev \
# type related services
libfreetype-dev \
# color management
liblcms2-dev \
# WebP format
libwebp-dev \
# JPEG 2000
libopenjp2-7-dev \
# improved color quantization
libimagequant-dev \
# complex text layout support
libraqm-dev"
WORKDIR /usr/src
COPY --from=qpdf-builder /usr/src/qpdf/*.deb ./
# As this is an base image for a multi-stage final image
# the added size of the install is basically irrelevant
RUN set -eux \
&& echo "Installing build tools" \
&& apt-get update --quiet \
&& apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \
&& echo "Installing qpdf" \
&& dpkg --install libqpdf29_*.deb \
&& dpkg --install libqpdf-dev_*.deb \
&& echo "Installing Python tools" \
&& python3 -m pip install --no-cache-dir --upgrade \
pip \
wheel \
# https://pikepdf.readthedocs.io/en/latest/installation.html#requirements
pybind11 \
&& echo "Building pikepdf wheel ${PIKEPDF_VERSION}" \
&& mkdir wheels \
&& python3 -m pip wheel \
# Build the package at the required version
pikepdf==${PIKEPDF_VERSION} \
# Output the *.whl into this directory
--wheel-dir wheels \
# Do not use a binary packge for the package being built
--no-binary=pikepdf \
# Do use binary packages for dependencies
--prefer-binary \
# Don't cache build files
--no-cache-dir \
&& ls -ahl wheels \
&& echo "Cleaning up image" \
&& apt-get -y purge ${BUILD_PACKAGES} \
&& apt-get -y autoremove --purge \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,48 @@
# This Dockerfile builds the psycopg2 wheel
# Inputs:
# - PSYCOPG2_VERSION - Version to build
FROM python:3.9-slim-bullseye as main
LABEL org.opencontainers.image.description="A intermediate image with psycopg2 wheel built"
ARG PSYCOPG2_VERSION
ARG DEBIAN_FRONTEND=noninteractive
ARG BUILD_PACKAGES="\
build-essential \
python3-dev \
python3-pip \
# https://www.psycopg.org/docs/install.html#prerequisites
libpq-dev"
WORKDIR /usr/src
# As this is an base image for a multi-stage final image
# the added size of the install is basically irrelevant
RUN set -eux \
&& echo "Installing build tools" \
&& apt-get update --quiet \
&& apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \
&& echo "Installing Python tools" \
&& python3 -m pip install --no-cache-dir --upgrade pip wheel \
&& echo "Building psycopg2 wheel ${PSYCOPG2_VERSION}" \
&& cd /usr/src \
&& mkdir wheels \
&& python3 -m pip wheel \
# Build the package at the required version
psycopg2==${PSYCOPG2_VERSION} \
# Output the *.whl into this directory
--wheel-dir wheels \
# Do not use a binary packge for the package being built
--no-binary=psycopg2 \
# Do use binary packages for dependencies
--prefer-binary \
# Don't cache build files
--no-cache-dir \
&& ls -ahl wheels/ \
&& echo "Cleaning up image" \
&& apt-get -y purge ${BUILD_PACKAGES} \
&& apt-get -y autoremove --purge \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,48 @@
# This Dockerfile compiles the jbig2enc library
# Inputs:
# - QPDF_VERSION - the version of qpdf to build a .deb.
# Must be present as a deb-src in bookworm
FROM debian:bullseye-slim as main
LABEL org.opencontainers.image.description="A intermediate image with qpdf built"
ARG DEBIAN_FRONTEND=noninteractive
# This must match to pikepdf's minimum at least
ARG QPDF_VERSION
ARG BUILD_PACKAGES="\
build-essential \
debhelper \
debian-keyring \
devscripts \
equivs \
libtool \
# https://qpdf.readthedocs.io/en/stable/installation.html#system-requirements
libjpeg62-turbo-dev \
libgnutls28-dev \
packaging-dev \
cmake \
zlib1g-dev"
WORKDIR /usr/src
RUN set -eux \
&& echo "Installing build tools" \
&& apt-get update --quiet \
&& apt-get install --yes --quiet --no-install-recommends $BUILD_PACKAGES \
&& echo "Getting qpdf src" \
&& echo "deb-src http://deb.debian.org/debian/ bookworm main" > /etc/apt/sources.list.d/bookworm-src.list \
&& apt-get update \
&& mkdir qpdf \
&& cd qpdf \
&& apt-get source --yes --quiet qpdf=${QPDF_VERSION}-1/bookworm \
&& echo "Building qpdf" \
&& cd qpdf-$QPDF_VERSION \
&& export DEB_BUILD_OPTIONS="terse nocheck nodoc parallel=2" \
&& dpkg-buildpackage --build=binary --unsigned-source --unsigned-changes --post-clean \
&& ls -ahl ../*.deb \
&& echo "Cleaning up image" \
&& apt-get -y purge ${BUILD_PACKAGES} \
&& apt-get -y autoremove --purge \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -22,6 +22,10 @@
# Docker setup does not use the configuration file.
# A few commonly adjusted settings are provided below.
# This is required if you will be exposing Paperless-ngx on a public domain
# (if doing so please consider security measures such as reverse proxy)
#PAPERLESS_URL=https://paperless.example.com
# Adjust this key if you plan to make paperless available publicly. It should
# be a very long sequence of random characters. You don't need to remember it.
#PAPERLESS_SECRET_KEY=change-me
@@ -32,3 +36,7 @@
# The default language to use for OCR. Set this to the language most of your
# documents are written in.
#PAPERLESS_OCR_LANGUAGE=eng
# Set if accessing paperless via a domain subpath e.g. https://domain.com/PATHPREFIX and using a reverse-proxy like traefik or nginx
#PAPERLESS_FORCE_SCRIPT_NAME=/PATHPREFIX
#PAPERLESS_STATIC_URL=/PATHPREFIX/static/ # trailing slash required

View File

@@ -0,0 +1,102 @@
# docker-compose file for running paperless from the Docker Hub.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
# - Docker volumes for storing data are managed by Docker.
# - Folders for importing and exporting files are created in the same directory
# as this file and mounted to the correct folders inside the container.
# - Paperless listens on port 8000.
#
# In addition to that, this docker-compose file adds the following optional
# configurations:
#
# - Instead of SQLite (default), MariaDB is used as the database server.
# - Apache Tika and Gotenberg servers are started with paperless and paperless
# is configured to use these services. These provide support for consuming
# Office documents (Word, Excel, Power Point and their LibreOffice counter-
# parts.
#
# To install and update paperless with this file, do the following:
#
# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env'
# and '.env' into a folder.
# - Run 'docker-compose pull'.
# - Run 'docker-compose run --rm webserver createsuperuser' to create a user.
# - Run 'docker-compose up -d'.
#
# For more extensive installation and update instructions, refer to the
# documentation.
version: "3.4"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: docker.io/library/mariadb:10
restart: unless-stopped
volumes:
- dbdata:/var/lib/mysql
environment:
MARIADB_HOST: paperless
MARIADB_DATABASE: paperless
MARIADB_USER: paperless
MARIADB_PASSWORD: paperless
MARIADB_ROOT_PASSWORD: paperless
ports:
- "3306:3306"
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBENGINE: mariadb
PAPERLESS_DBHOST: db
PAPERLESS_DBUSER: paperless # only needed if non-default username
PAPERLESS_DBPASS: paperless # only needed if non-default password
PAPERLESS_DBPORT: 3306
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
gotenberg:
image: docker.io/gotenberg/gotenberg:7.6
restart: unless-stopped
command:
- "gotenberg"
- "--chromium-disable-routes=true"
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
volumes:
data:
media:
dbdata:
redisdata:

View File

@@ -0,0 +1,83 @@
# docker-compose file for running paperless from the Docker Hub.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
# - Docker volumes for storing data are managed by Docker.
# - Folders for importing and exporting files are created in the same directory
# as this file and mounted to the correct folders inside the container.
# - Paperless listens on port 8000.
#
# In addition to that, this docker-compose file adds the following optional
# configurations:
#
# - Instead of SQLite (default), MariaDB is used as the database server.
#
# To install and update paperless with this file, do the following:
#
# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env'
# and '.env' into a folder.
# - Run 'docker-compose pull'.
# - Run 'docker-compose run --rm webserver createsuperuser' to create a user.
# - Run 'docker-compose up -d'.
#
# For more extensive installation and update instructions, refer to the
# documentation.
version: "3.4"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: docker.io/library/mariadb:10
restart: unless-stopped
volumes:
- dbdata:/var/lib/mysql
environment:
MARIADB_HOST: paperless
MARIADB_DATABASE: paperless
MARIADB_USER: paperless
MARIADB_PASSWORD: paperless
MARIADB_ROOT_PASSWORD: paperless
ports:
- "3306:3306"
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBENGINE: mariadb
PAPERLESS_DBHOST: db
PAPERLESS_DBUSER: paperless # only needed if non-default username
PAPERLESS_DBPASS: paperless # only needed if non-default password
PAPERLESS_DBPORT: 3306
volumes:
data:
media:
dbdata:
redisdata:

View File

@@ -31,13 +31,13 @@
version: "3.4"
services:
broker:
image: redis:6.0
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: postgres:13
image: docker.io/library/postgres:13
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
@@ -55,7 +55,7 @@ services:
ports:
- 8010:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5

View File

@@ -1,4 +1,4 @@
# docker-compose file for running paperless from the Docker Hub.
# docker-compose file for running paperless from the docker container registry.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
@@ -33,13 +33,13 @@
version: "3.4"
services:
broker:
image: redis:6.0
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: postgres:13
image: docker.io/library/postgres:13
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
@@ -59,7 +59,7 @@ services:
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
@@ -77,13 +77,14 @@ services:
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
gotenberg:
image: gotenberg/gotenberg:7
image: docker.io/gotenberg/gotenberg:7.6
restart: unless-stopped
environment:
CHROMIUM_DISABLE_ROUTES: 1
command:
- "gotenberg"
- "--chromium-disable-routes=true"
tika:
image: apache/tika
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
volumes:

View File

@@ -29,13 +29,13 @@
version: "3.4"
services:
broker:
image: redis:6.0
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: postgres:13
image: docker.io/library/postgres:13
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
@@ -53,7 +53,7 @@ services:
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5

View File

@@ -1,7 +1,6 @@
# docker-compose file for running paperless from the Docker Hub.
# docker-compose file for running paperless from the docker container registry.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
@@ -34,7 +33,7 @@
version: "3.4"
services:
broker:
image: redis:6.0
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
@@ -49,7 +48,7 @@ services:
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
@@ -66,13 +65,14 @@ services:
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
gotenberg:
image: gotenberg/gotenberg:7
image: docker.io/gotenberg/gotenberg:7.6
restart: unless-stopped
environment:
CHROMIUM_DISABLE_ROUTES: 1
command:
- "gotenberg"
- "--chromium-disable-routes=true"
tika:
image: apache/tika
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
volumes:

View File

@@ -26,7 +26,7 @@
version: "3.4"
services:
broker:
image: redis:6.0
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
@@ -39,7 +39,7 @@ services:
ports:
- 8000:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5

View File

@@ -1,47 +1,143 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
# Adapted from:
# https://github.com/docker-library/postgres/blob/master/docker-entrypoint.sh
# usage: file_env VAR
# ie: file_env 'XYZ_DB_PASSWORD' will allow for "$XYZ_DB_PASSWORD_FILE" to
# fill in the value of "$XYZ_DB_PASSWORD" from a file, especially for Docker's
# secrets feature
file_env() {
local -r var="$1"
local -r fileVar="${var}_FILE"
# Basic validation
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
exit 1
fi
# Only export var if the _FILE exists
if [ "${!fileVar:-}" ]; then
# And the file exists
if [[ -f ${!fileVar} ]]; then
echo "Setting ${var} from file"
val="$(< "${!fileVar}")"
export "$var"="$val"
else
echo "File ${!fileVar} doesn't exist"
exit 1
fi
fi
}
# Source: https://github.com/sameersbn/docker-gitlab/
map_uidgid() {
USERMAP_ORIG_UID=$(id -u paperless)
USERMAP_ORIG_GID=$(id -g paperless)
USERMAP_NEW_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
USERMAP_NEW_GID=${USERMAP_GID:-${USERMAP_ORIG_GID:-$USERMAP_NEW_UID}}
if [[ ${USERMAP_NEW_UID} != "${USERMAP_ORIG_UID}" || ${USERMAP_NEW_GID} != "${USERMAP_ORIG_GID}" ]]; then
echo "Mapping UID and GID for paperless:paperless to $USERMAP_NEW_UID:$USERMAP_NEW_GID"
usermod -u "${USERMAP_NEW_UID}" paperless
groupmod -o -g "${USERMAP_NEW_GID}" paperless
local -r usermap_original_uid=$(id -u paperless)
local -r usermap_original_gid=$(id -g paperless)
local -r usermap_new_uid=${USERMAP_UID:-$usermap_original_uid}
local -r usermap_new_gid=${USERMAP_GID:-${usermap_original_gid:-$usermap_new_uid}}
if [[ ${usermap_new_uid} != "${usermap_original_uid}" || ${usermap_new_gid} != "${usermap_original_gid}" ]]; then
echo "Mapping UID and GID for paperless:paperless to $usermap_new_uid:$usermap_new_gid"
usermod -o -u "${usermap_new_uid}" paperless
groupmod -o -g "${usermap_new_gid}" paperless
fi
}
map_folders() {
# Export these so they can be used in docker-prepare.sh
export DATA_DIR="${PAPERLESS_DATA_DIR:-/usr/src/paperless/data}"
export MEDIA_ROOT_DIR="${PAPERLESS_MEDIA_ROOT:-/usr/src/paperless/media}"
export CONSUME_DIR="${PAPERLESS_CONSUMPTION_DIR:-/usr/src/paperless/consume}"
}
nltk_data () {
# Store the NLTK data outside the Docker container
local -r nltk_data_dir="${DATA_DIR}/nltk"
local -r truthy_things=("yes y 1 t true")
# If not set, or it looks truthy
if [[ -z "${PAPERLESS_ENABLE_NLTK}" ]] || [[ "${truthy_things[*]}" =~ ${PAPERLESS_ENABLE_NLTK,} ]]; then
# Download or update the snowball stemmer data
python3 -W ignore::RuntimeWarning -m nltk.downloader -d "${nltk_data_dir}" snowball_data
# Download or update the stopwords corpus
python3 -W ignore::RuntimeWarning -m nltk.downloader -d "${nltk_data_dir}" stopwords
# Download or update the punkt tokenizer data
python3 -W ignore::RuntimeWarning -m nltk.downloader -d "${nltk_data_dir}" punkt
else
echo "Skipping NLTK data download"
fi
}
initialize() {
# Setup environment from secrets before anything else
for env_var in \
PAPERLESS_DBUSER \
PAPERLESS_DBPASS \
PAPERLESS_SECRET_KEY \
PAPERLESS_AUTO_LOGIN_USERNAME \
PAPERLESS_ADMIN_USER \
PAPERLESS_ADMIN_MAIL \
PAPERLESS_ADMIN_PASSWORD \
PAPERLESS_REDIS; do
# Check for a version of this var with _FILE appended
# and convert the contents to the env var value
file_env ${env_var}
done
# Change the user and group IDs if needed
map_uidgid
for dir in export data data/index media media/documents media/documents/originals media/documents/thumbnails; do
if [[ ! -d "../$dir" ]]; then
echo "Creating directory ../$dir"
mkdir ../$dir
# Check for overrides of certain folders
map_folders
local -r export_dir="/usr/src/paperless/export"
for dir in \
"${export_dir}" \
"${DATA_DIR}" "${DATA_DIR}/index" \
"${MEDIA_ROOT_DIR}" "${MEDIA_ROOT_DIR}/documents" "${MEDIA_ROOT_DIR}/documents/originals" "${MEDIA_ROOT_DIR}/documents/thumbnails" \
"${CONSUME_DIR}"; do
if [[ ! -d "${dir}" ]]; then
echo "Creating directory ${dir}"
mkdir "${dir}"
fi
done
echo "Creating directory /tmp/paperless"
mkdir -p /tmp/paperless
local -r tmp_dir="/tmp/paperless"
echo "Creating directory ${tmp_dir}"
mkdir -p "${tmp_dir}"
nltk_data
set +e
echo "Adjusting permissions of paperless files. This may take a while."
chown -R paperless:paperless /tmp/paperless
find .. -not \( -user paperless -and -group paperless \) -exec chown paperless:paperless {} +
chown -R paperless:paperless ${tmp_dir}
for dir in \
"${export_dir}" \
"${DATA_DIR}" \
"${MEDIA_ROOT_DIR}" \
"${CONSUME_DIR}"; do
find "${dir}" -not \( -user paperless -and -group paperless \) -exec chown paperless:paperless {} +
done
set -e
gosu paperless /sbin/docker-prepare.sh
"${gosu_cmd[@]}" /sbin/docker-prepare.sh
}
install_languages() {
echo "Installing languages..."
local langs="$1"
read -ra langs <<<"$langs"
read -ra langs <<<"$1"
# Check that it is not empty
if [ ${#langs[@]} -eq 0 ]; then
@@ -56,12 +152,12 @@ install_languages() {
# continue
#fi
if dpkg -s $pkg &>/dev/null; then
if dpkg -s "$pkg" &>/dev/null; then
echo "Package $pkg already installed!"
continue
fi
if ! apt-cache show $pkg &>/dev/null; then
if ! apt-cache show "$pkg" &>/dev/null; then
echo "Package $pkg not found! :("
continue
fi
@@ -76,8 +172,13 @@ install_languages() {
echo "Paperless-ngx docker container starting..."
gosu_cmd=(gosu paperless)
if [ "$(id -u)" == "$(id -u paperless)" ]; then
gosu_cmd=()
fi
# Install additional languages if specified
if [[ ! -z "$PAPERLESS_OCR_LANGUAGES" ]]; then
if [[ -n "$PAPERLESS_OCR_LANGUAGES" ]]; then
install_languages "$PAPERLESS_OCR_LANGUAGES"
fi
@@ -85,7 +186,7 @@ initialize
if [[ "$1" != "/"* ]]; then
echo Executing management command "$@"
exec gosu paperless python3 manage.py "$@"
exec "${gosu_cmd[@]}" python3 manage.py "$@"
else
echo Executing "$@"
exec "$@"

View File

@@ -1,19 +1,19 @@
#!/usr/bin/env bash
set -e
wait_for_postgres() {
attempt_num=1
max_attempts=5
local attempt_num=1
local -r max_attempts=5
echo "Waiting for PostgreSQL to start..."
host="${PAPERLESS_DBHOST}"
port="${PAPERLESS_DBPORT}"
local -r host="${PAPERLESS_DBHOST:-localhost}"
local -r port="${PAPERLESS_DBPORT:-5432}"
if [[ -z $port ]]; then
port="5432"
fi
while ! </dev/tcp/$host/$port; do
# Disable warning, host and port can't have spaces
# shellcheck disable=SC2086
while [ ! "$(pg_isready -h ${host} -p ${port})" ]; do
if [ $attempt_num -eq $max_attempts ]; then
echo "Unable to connect to database."
@@ -23,11 +23,43 @@ wait_for_postgres() {
fi
attempt_num=$(expr "$attempt_num" + 1)
attempt_num=$(("$attempt_num" + 1))
sleep 5
done
}
wait_for_mariadb() {
echo "Waiting for MariaDB to start..."
local -r host="${PAPERLESS_DBHOST:=localhost}"
local -r port="${PAPERLESS_DBPORT:=3306}"
local attempt_num=1
local -r max_attempts=5
while ! true > /dev/tcp/$host/$port; do
if [ $attempt_num -eq $max_attempts ]; then
echo "Unable to connect to database."
exit 1
else
echo "Attempt $attempt_num failed! Trying again in 5 seconds..."
fi
attempt_num=$(("$attempt_num" + 1))
sleep 5
done
}
wait_for_redis() {
# We use a Python script to send the Redis ping
# instead of installing redis-tools just for 1 thing
if ! python3 /sbin/wait-for-redis.py; then
exit 1
fi
}
migrations() {
(
# flock is in place to prevent multiple containers from doing migrations
@@ -36,17 +68,18 @@ migrations() {
flock 200
echo "Apply database migrations..."
python3 manage.py migrate
) 200>/usr/src/paperless/data/migration_lock
) 200>"${DATA_DIR}/migration_lock"
}
search_index() {
index_version=1
index_version_file=/usr/src/paperless/data/.index_version
if [[ (! -f "$index_version_file") || $(<$index_version_file) != "$index_version" ]]; then
local -r index_version=1
local -r index_version_file=${DATA_DIR}/.index_version
if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then
echo "Search index out of date. Updating..."
python3 manage.py document_index reindex
echo $index_version | tee $index_version_file >/dev/null
python3 manage.py document_index reindex --no-progress-bar
echo ${index_version} | tee "${index_version_file}" >/dev/null
fi
}
@@ -56,17 +89,64 @@ superuser() {
fi
}
custom_container_init() {
# Mostly borrowed from the LinuxServer.io base image
# https://github.com/linuxserver/docker-baseimage-ubuntu/tree/bionic/root/etc/cont-init.d
local -r custom_script_dir="/custom-cont-init.d"
# Tamper checking.
# Don't run files which are owned by anyone except root
# Don't run files which are writeable by others
if [ -d "${custom_script_dir}" ]; then
if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 ! -user root)" ]; then
echo "**** Potential tampering with custom scripts detected ****"
echo "**** The folder '${custom_script_dir}' must be owned by root ****"
return 0
fi
if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 -perm -o+w)" ]; then
echo "**** The folder '${custom_script_dir}' or some of contents have write permissions for others, which is a security risk. ****"
echo "**** Please review the permissions and their contents to make sure they are owned by root, and can only be modified by root. ****"
return 0
fi
# Make sure custom init directory has files in it
if [ -n "$(/bin/ls -A "${custom_script_dir}" 2>/dev/null)" ]; then
echo "[custom-init] files found in ${custom_script_dir} executing"
# Loop over files in the directory
for SCRIPT in "${custom_script_dir}"/*; do
NAME="$(basename "${SCRIPT}")"
if [ -f "${SCRIPT}" ]; then
echo "[custom-init] ${NAME}: executing..."
/bin/bash "${SCRIPT}"
echo "[custom-init] ${NAME}: exited $?"
elif [ ! -f "${SCRIPT}" ]; then
echo "[custom-init] ${NAME}: is not a file"
fi
done
else
echo "[custom-init] no custom files found exiting..."
fi
fi
}
do_work() {
if [[ -n "${PAPERLESS_DBHOST}" ]]; then
if [[ "${PAPERLESS_DBENGINE}" == "mariadb" ]]; then
wait_for_mariadb
elif [[ -n "${PAPERLESS_DBHOST}" ]]; then
wait_for_postgres
fi
wait_for_redis
migrations
search_index
superuser
# Leave this last thing
custom_container_init
}
do_work

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
echo "Checking if we should start flower..."
if [[ -n "${PAPERLESS_ENABLE_FLOWER}" ]]; then
celery --app paperless flower
fi

View File

@@ -1,4 +1,19 @@
for command in document_archiver document_exporter document_importer mail_fetcher document_create_classifier document_index document_renamer document_retagger document_thumbnails document_sanity_checker manage_superuser;
#!/usr/bin/env bash
set -eu
for command in decrypt_documents \
document_archiver \
document_exporter \
document_importer \
mail_fetcher \
document_create_classifier \
document_index \
document_renamer \
document_retagger \
document_thumbnails \
document_sanity_checker \
manage_superuser;
do
echo "installing $command..."
sed "s/management_command/$command/g" management_script.sh > /usr/local/bin/$command

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
@@ -6,10 +6,10 @@ cd /usr/src/paperless/src/
if [[ $(id -u) == 0 ]] ;
then
gosu paperless python3 manage.py management_command "$@"
gosu paperless python3 manage.py management_command "$@"
elif [[ $(id -un) == "paperless" ]] ;
then
python3 manage.py management_command "$@"
python3 manage.py management_command "$@"
else
echo "Unknown user."
echo "Unknown user."
fi

15
docker/paperless_cmd.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
rootless_args=()
if [ "$(id -u)" == "$(id -u paperless)" ]; then
rootless_args=(
--user
paperless
--logfile
supervisord.log
--pidfile
supervisord.pid
)
fi
exec /usr/local/bin/supervisord -c /etc/supervisord.conf "${rootless_args[@]}"

View File

@@ -10,7 +10,7 @@ user=root
[program:gunicorn]
command=gunicorn -c /usr/src/paperless/gunicorn.conf.py paperless.asgi:application
user=paperless
priority = 1
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
@@ -19,16 +19,41 @@ stderr_logfile_maxbytes=0
[program:consumer]
command=python3 manage.py document_consumer
user=paperless
stopsignal=INT
priority = 20
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:scheduler]
command=python3 manage.py qcluster
[program:celery]
command = celery --app paperless worker --loglevel INFO
user=paperless
stopasgroup = true
stopwaitsecs = 60
priority = 5
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:celery-beat]
command = celery --app paperless beat --loglevel INFO
user=paperless
stopasgroup = true
priority = 10
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:celery-flower]
command = /usr/local/bin/flower-conditional.sh
user = paperless
startsecs = 0
priority = 40
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr

44
docker/wait-for-redis.py Executable file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/env python3
"""
Simple script which attempts to ping the Redis broker as set in the environment for
a certain number of times, waiting a little bit in between
"""
import os
import sys
import time
from typing import Final
from redis import Redis
if __name__ == "__main__":
MAX_RETRY_COUNT: Final[int] = 5
RETRY_SLEEP_SECONDS: Final[int] = 5
REDIS_URL: Final[str] = os.getenv("PAPERLESS_REDIS", "redis://localhost:6379")
print(f"Waiting for Redis...", flush=True)
attempt = 0
with Redis.from_url(url=REDIS_URL) as client:
while attempt < MAX_RETRY_COUNT:
try:
client.ping()
break
except Exception as e:
print(
f"Redis ping #{attempt} failed.\n"
f"Error: {str(e)}.\n"
f"Waiting {RETRY_SLEEP_SECONDS}s",
flush=True,
)
time.sleep(RETRY_SLEEP_SECONDS)
attempt += 1
if attempt >= MAX_RETRY_COUNT:
print(f"Failed to connect to redis using environment variable PAPERLESS_REDIS.")
sys.exit(os.EX_UNAVAILABLE)
else:
print(f"Connected to Redis broker.")
sys.exit(os.EX_OK)

View File

@@ -1,18 +0,0 @@
FROM python:3.5.1
MAINTAINER Pit Kleyersburg <pitkley@googlemail.com>
# Install Sphinx and Pygments
RUN pip install Sphinx Pygments
# Setup directories, copy data
RUN mkdir /build
COPY . /build
WORKDIR /build/docs
# Build documentation
RUN make html
# Start webserver
WORKDIR /build/docs/_build/html
EXPOSE 8000/tcp
CMD ["python3", "-m", "http.server"]

View File

@@ -24,6 +24,7 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " livehtml to preview changes with live reload in your browser"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@@ -54,6 +55,9 @@ html:
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
livehtml:
sphinx-autobuild "./" "$(BUILDDIR)" $(O)
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo

605
docs/_static/css/custom.css vendored Normal file
View File

@@ -0,0 +1,605 @@
/* Variables */
:root {
--color-text-body: #5c5962;
--color-text-body-light: #fcfcfc;
--color-text-anchor: #7253ed;
--color-text-alt: rgba(0, 0, 0, 0.3);
--color-text-title: #27262b;
--color-text-code-inline: #e74c3c;
--color-text-code-nt: #062873;
--color-text-selection: #b19eff;
--color-bg-body: #fcfcfc;
--color-bg-body-alt: #f3f6f6;
--color-bg-side-nav: #f5f6fa;
--color-bg-side-nav-hover: #ebedf5;
--color-bg-code-block: var(--color-bg-side-nav);
--color-border: #eeebee;
--color-btn-neutral-bg: #f3f6f6;
--color-btn-neutral-bg-hover: #e5ebeb;
--color-success-title: #1abc9c;
--color-success-body: #dbfaf4;
--color-warning-title: #f0b37e;
--color-warning-body: #ffedcc;
--color-danger-title: #f29f97;
--color-danger-body: #fdf3f2;
--color-info-title: #6ab0de;
--color-info-body: #e7f2fa;
}
.dark-mode {
--color-text-body: #abb2bf;
--color-text-body-light: #9499a2;
--color-text-alt: rgba(0255, 255, 255, 0.5);
--color-text-title: var(--color-text-anchor);
--color-text-code-inline: #abb2bf;
--color-text-code-nt: #2063f3;
--color-text-selection: #030303;
--color-bg-body: #1d1d20 !important;
--color-bg-body-alt: #131315;
--color-bg-side-nav: #18181a;
--color-bg-side-nav-hover: #101216;
--color-bg-code-block: #101216;
--color-border: #47494f;
--color-btn-neutral-bg: #242529;
--color-btn-neutral-bg-hover: #101216;
--color-success-title: #02120f;
--color-success-body: #041b17;
--color-warning-title: #1b0e03;
--color-warning-body: #371d06;
--color-danger-title: #120902;
--color-danger-body: #1b0503;
--color-info-title: #020608;
--color-info-body: #06141e;
}
* {
transition: background-color 0.3s ease, border-color 0.3s ease;
}
/* Typography */
body {
font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
font-size: inherit;
line-height: 1.4;
color: var(--color-text-body);
}
.rst-content p {
word-break: break-word;
}
h1, h2, h3, h4, h5, h6 {
font-family: inherit;
}
.rst-content .toctree-wrapper>p.caption, .rst-content h1, .rst-content h2, .rst-content h3, .rst-content h4, .rst-content h5, .rst-content h6 {
padding-top: .5em;
}
p, .main-content-wrap, .rst-content .section ul, .rst-content .toctree-wrapper ul, .rst-content section ul, .wy-plain-list-disc, article ul {
line-height: 1.6;
}
pre, .code, .rst-content .linenodiv pre, .rst-content div[class^=highlight] pre, .rst-content pre.literal-block {
font-family: "SFMono-Regular", Menlo,Consolas, Monospace;
font-size: 0.75em;
line-height: 1.8;
}
.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4 {
font-size: 1rem
}
.rst-versions {
font-family: inherit;
line-height: 1;
}
footer, footer p {
font-size: .8rem;
}
footer .rst-footer-buttons {
font-size: 1rem;
}
@media (max-width: 400px) {
/* break code lines on mobile */
pre, code {
word-break: break-word;
}
}
/* Layout */
.wy-side-nav-search, .wy-menu-vertical {
width: auto;
}
.wy-nav-side {
z-index: 0;
display: flex;
flex-wrap: wrap;
background-color: var(--color-bg-side-nav);
}
.wy-side-scroll {
width: 100%;
overflow-y: auto;
}
@media (min-width: 66.5rem) {
.wy-side-scroll {
width:264px
}
}
@media (min-width: 50rem) {
.wy-nav-side {
flex-wrap: nowrap;
position: fixed;
width: 248px;
height: 100%;
flex-direction: column;
border-right: 1px solid var(--color-border);
align-items:flex-end
}
}
@media (min-width: 66.5rem) {
.wy-nav-side {
width: calc((100% - 1064px) / 2 + 264px);
min-width:264px
}
}
@media (min-width: 50rem) {
.wy-nav-content-wrap {
position: relative;
max-width: 800px;
margin-left:248px
}
}
@media (min-width: 66.5rem) {
.wy-nav-content-wrap {
margin-left:calc((100% - 1064px) / 2 + 264px)
}
}
/* Colors */
body.wy-body-for-nav,
.wy-nav-content {
background: var(--color-bg-body);
}
.wy-nav-side {
border-right: 1px solid var(--color-border);
}
.wy-side-nav-search, .wy-nav-top {
background: var(--color-bg-side-nav);
border-bottom: 1px solid var(--color-border);
}
.wy-nav-content-wrap {
background: inherit;
}
.wy-side-nav-search > a, .wy-nav-top a, .wy-nav-top i {
color: var(--color-text-title);
}
.wy-side-nav-search > a:hover, .wy-nav-top a:hover {
background: transparent;
}
.wy-side-nav-search > div.version {
color: var(--color-text-alt)
}
.wy-side-nav-search > div[role="search"] {
border-top: 1px solid var(--color-border);
}
.wy-menu-vertical li.toctree-l2.current>a, .wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,
.wy-menu-vertical li.toctree-l3.current>a, .wy-menu-vertical li.toctree-l3.current li.toctree-l4>a {
background: var(--color-bg-side-nav);
}
.rst-content .highlighted {
background: #eedd85;
box-shadow: 0 0 0 2px #eedd85;
font-weight: 600;
}
.wy-side-nav-search input[type=text],
html.writer-html5 .rst-content table.docutils th {
color: var(--color-text-body);
}
.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,
.wy-table-backed,
.wy-table-odd td,
.wy-table-striped tr:nth-child(2n-1) td {
background-color: var(--color-bg-body-alt);
}
.rst-content table.docutils,
.wy-table-bordered-all,
html.writer-html5 .rst-content table.docutils th,
.rst-content table.docutils td,
.wy-table-bordered-all td,
hr {
border-color: var(--color-border) !important;
}
::selection {
background: var(--color-text-selection);
}
/* Ridiculous rules are taken from sphinx_rtd */
.rst-content .admonition-title,
.wy-alert-title {
color: var(--color-text-body-light);
}
.rst-content .hint,
.rst-content .important,
.rst-content .tip,
.rst-content .wy-alert-success,
.wy-alert.wy-alert-success {
background: var(--color-success-body);
}
.rst-content .hint .admonition-title,
.rst-content .hint .wy-alert-title,
.rst-content .important .admonition-title,
.rst-content .important .wy-alert-title,
.rst-content .tip .admonition-title,
.rst-content .tip .wy-alert-title,
.rst-content .wy-alert-success .admonition-title,
.rst-content .wy-alert-success .wy-alert-title,
.wy-alert.wy-alert-success .rst-content .admonition-title,
.wy-alert.wy-alert-success .wy-alert-title {
background-color: var(--color-success-title);
}
.rst-content .admonition-todo,
.rst-content .attention,
.rst-content .caution,
.rst-content .warning,
.rst-content .wy-alert-warning,
.wy-alert.wy-alert-warning {
background: var(--color-warning-body);
}
.rst-content .admonition-todo .admonition-title,
.rst-content .admonition-todo .wy-alert-title,
.rst-content .attention .admonition-title,
.rst-content .attention .wy-alert-title,
.rst-content .caution .admonition-title,
.rst-content .caution .wy-alert-title,
.rst-content .warning .admonition-title,
.rst-content .warning .wy-alert-title,
.rst-content .wy-alert-warning .admonition-title,
.rst-content .wy-alert-warning .wy-alert-title,
.rst-content .wy-alert.wy-alert-warning .admonition-title,
.wy-alert.wy-alert-warning .rst-content .admonition-title,
.wy-alert.wy-alert-warning .wy-alert-title {
background: var(--color-warning-title);
}
.rst-content .danger,
.rst-content .error,
.rst-content .wy-alert-danger,
.wy-alert.wy-alert-danger {
background: var(--color-danger-body);
}
.rst-content .danger .admonition-title,
.rst-content .danger .wy-alert-title,
.rst-content .error .admonition-title,
.rst-content .error .wy-alert-title,
.rst-content .wy-alert-danger .admonition-title,
.rst-content .wy-alert-danger .wy-alert-title,
.wy-alert.wy-alert-danger .rst-content .admonition-title,
.wy-alert.wy-alert-danger .wy-alert-title {
background: var(--color-danger-title);
}
.rst-content .note,
.rst-content .seealso,
.rst-content .wy-alert-info,
.wy-alert.wy-alert-info {
background: var(--color-info-body);
}
.rst-content .note .admonition-title,
.rst-content .note .wy-alert-title,
.rst-content .seealso .admonition-title,
.rst-content .seealso .wy-alert-title,
.rst-content .wy-alert-info .admonition-title,
.rst-content .wy-alert-info .wy-alert-title,
.wy-alert.wy-alert-info .rst-content .admonition-title,
.wy-alert.wy-alert-info .wy-alert-title {
background: var(--color-info-title);
}
/* Links */
a, a:visited,
.wy-menu-vertical a,
a.icon.icon-home,
.wy-menu-vertical li.toctree-l1.current > a.current {
color: var(--color-text-anchor);
text-decoration: none;
}
a:hover, .wy-breadcrumbs-aside a {
color: var(--color-text-anchor); /* reset */
}
.rst-versions a, .rst-versions .rst-current-version {
color: #var(--color-text-anchor);
}
.wy-nav-content a.reference, .wy-nav-content a:not([class]) {
background-image: linear-gradient(var(--color-border) 0%, var(--color-border) 100%);
background-repeat: repeat-x;
background-position: 0 100%;
background-size: 1px 1px;
}
.wy-nav-content a.reference:hover, .wy-nav-content a:not([class]):hover {
background-image: linear-gradient(rgba(114,83,237,0.45) 0%, rgba(114,83,237,0.45) 100%);
background-size: 1px 1px;
}
.wy-menu-vertical a:hover,
.wy-menu-vertical li.current a:hover,
.wy-menu-vertical a:active {
background: var(--color-bg-side-nav-hover) !important;
color: var(--color-text-body);
}
.wy-menu-vertical li.toctree-l1.current>a,
.wy-menu-vertical li.current>a,
.wy-menu-vertical li.on a {
background-color: var(--color-bg-side-nav-hover);
border: none;
font-weight: normal;
}
.wy-menu-vertical li.current {
background-color: inherit;
}
.wy-menu-vertical li.current a {
border-right: none;
}
.wy-menu-vertical li.toctree-l2 a,
.wy-menu-vertical li.toctree-l3 a,
.wy-menu-vertical li.toctree-l4 a,
.wy-menu-vertical li.toctree-l5 a,
.wy-menu-vertical li.toctree-l6 a,
.wy-menu-vertical li.toctree-l7 a,
.wy-menu-vertical li.toctree-l8 a,
.wy-menu-vertical li.toctree-l9 a,
.wy-menu-vertical li.toctree-l10 a {
color: var(--color-text-body);
}
a.image-reference, a.image-reference:hover {
background: none !important;
}
a.image-reference img {
cursor: zoom-in;
}
/* Code blocks */
.rst-content code, .rst-content tt, code {
padding: 0.25em;
font-weight: 400;
background-color: var(--color-bg-code-block);
border: 1px solid var(--color-border);
border-radius: 4px;
}
.rst-content div[class^=highlight], .rst-content pre.literal-block {
padding: 0.7rem;
margin-top: 0;
margin-bottom: 0.75rem;
overflow-x: auto;
background-color: var(--color-bg-side-nav);
border-color: var(--color-border);
border-radius: 4px;
box-shadow: none;
}
.rst-content .admonition-title,
.rst-content div.admonition,
.wy-alert-title {
padding: 10px 12px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.highlight .go {
color: inherit;
}
.highlight .nt {
color: var(--color-text-code-nt);
}
.rst-content code.literal,
.rst-content tt.literal,
html.writer-html5 .rst-content dl.footnote code {
border-color: var(--color-border);
background-color: var(--color-border);
color: var(--color-text-code-inline)
}
/* Search */
.wy-side-nav-search input[type=text] {
border: none;
border-radius: 0;
background-color: transparent;
font-family: inherit;
font-size: .85rem;
box-shadow: none;
padding: .7rem 1rem .7rem 2.8rem;
margin: 0;
}
#rtd-search-form {
position: relative;
}
#rtd-search-form:before {
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f002";
color: var(--color-text-alt);
position: absolute;
left: 1.5rem;
top: .7rem;
}
/* Side nav */
.wy-side-nav-search {
padding: 1rem 0 0 0;
}
.wy-menu-vertical li a button.toctree-expand {
float: right;
margin-right: -1.5em;
padding: 0 .5em;
}
.wy-menu-vertical a,
.wy-menu-vertical li.current>a,
.wy-menu-vertical li.current li>a {
padding-right: 1.5em !important;
}
.wy-menu-vertical li.current li>a.current {
font-weight: 600;
}
/* Misc spacing */
.rst-content .admonition-title, .wy-alert-title {
padding: 10px 12px;
}
/* Buttons */
.btn {
display: inline-block;
box-sizing: border-box;
padding: 0.3em 1em;
margin: 0;
font-family: inherit;
font-size: inherit;
font-weight: 500;
line-height: 1.5;
color: #var(--color-text-anchor);
text-decoration: none;
vertical-align: baseline;
background-color: #f7f7f7;
border-width: 0;
border-radius: 4px;
box-shadow: 0 1px 2px rgba(0,0,0,0.12),0 3px 10px rgba(0,0,0,0.08);
appearance: none;
}
.btn:active {
padding: 0.3em 1em;
}
.rst-content .btn:focus {
outline: 1px solid #ccc;
}
.rst-content .btn-neutral, .rst-content .btn span.fa {
color: var(--color-text-body) !important;
}
.btn-neutral {
background-color: var(--color-btn-neutral-bg) !important;
color: var(--color-btn-neutral-text) !important;
border: 1px solid var(--color-btn-neutral-bg);
}
.btn:hover, .btn-neutral:hover {
background-color: var(--color-btn-neutral-bg-hover) !important;
}
/* Icon overrides */
.wy-side-nav-search a.icon-home:before {
display: none;
}
.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before {
content: "\f106"; /* fa-angle-up */
}
.fa-plus-square-o:before, .wy-menu-vertical li button.toctree-expand:before {
content: "\f107"; /* fa-angle-down */
}
/* Misc */
.wy-nav-top {
line-height: 36px;
}
.wy-nav-top > i {
font-size: 24px;
padding: 8px 0 0 2px;
color:#var(--color-text-anchor);
}
.rst-content table.docutils td,
.rst-content table.docutils th,
.rst-content table.field-list td,
.rst-content table.field-list th,
.wy-table td,
.wy-table th {
padding: 8px 14px;
}
.dark-mode-toggle {
position: absolute;
top: 14px;
right: 12px;
height: 20px;
width: 24px;
z-index: 10;
border: none;
background-color: transparent;
color: inherit;
opacity: 0.7;
}
.wy-nav-content-wrap {
z-index: 20;
}
.rst-content .toctree-wrapper {
display: none;
}
.redirect-notice {
font-size: 2.5rem;
}

View File

@@ -1,14 +0,0 @@
/* override table width restrictions */
@media screen and (min-width: 767px) {
.wy-table-responsive table td {
/* !important prevents the common CSS stylesheets from
overriding this as on RTD they are loaded after this stylesheet */
white-space: normal !important;
}
.wy-table-responsive {
overflow: visible !important;
}
}

47
docs/_static/js/darkmode.js vendored Normal file
View File

@@ -0,0 +1,47 @@
let toggleButton
let icon
function load() {
'use strict'
toggleButton = document.createElement('button')
toggleButton.setAttribute('title', 'Toggle dark mode')
toggleButton.classList.add('dark-mode-toggle')
icon = document.createElement('i')
icon.classList.add('fa', darkModeState ? 'fa-sun-o' : 'fa-moon-o')
toggleButton.appendChild(icon)
document.body.prepend(toggleButton)
// Listen for changes in the OS settings
// addListener is used because older versions of Safari don't support addEventListener
// prefersDarkQuery set in <head>
if (prefersDarkQuery) {
prefersDarkQuery.addListener(function (evt) {
toggleDarkMode(evt.matches)
})
}
// Initial setting depending on the prefers-color-mode or localstorage
// darkModeState should be set in the document <head> to prevent flash
if (darkModeState == undefined) darkModeState = false
toggleDarkMode(darkModeState)
// Toggles the "dark-mode" class on click and sets localStorage state
toggleButton.addEventListener('click', () => {
darkModeState = !darkModeState
toggleDarkMode(darkModeState)
localStorage.setItem('dark-mode', darkModeState)
})
}
function toggleDarkMode(state) {
document.documentElement.classList.toggle('dark-mode', state)
document.documentElement.classList.toggle('light-mode', !state)
icon.classList.remove('fa-sun-o')
icon.classList.remove('fa-moon-o')
icon.classList.add(state ? 'fa-sun-o' : 'fa-moon-o')
darkModeState = state
}
document.addEventListener('DOMContentLoaded', load)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 KiB

BIN
docs/_static/screenshots/bulk-edit.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 848 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 703 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 517 KiB

38
docs/_templates/layout.html vendored Normal file
View File

@@ -0,0 +1,38 @@
{% extends "!layout.html" %}
{% block extrahead %}
<script>
// MediaQueryList object
const prefersDarkQuery = window.matchMedia("(prefers-color-scheme: dark)");
const lsDark = localStorage.getItem("dark-mode");
let darkModeState = lsDark !== null ? lsDark == "true" : prefersDarkQuery.matches;
document.documentElement.classList.toggle("dark-mode", darkModeState);
document.documentElement.classList.toggle("light-mode", !darkModeState);
const RTD_TO_MKD = {
"index.html": "",
"setup.html": "setup",
"usage_overview.html": "usage",
"advanced_usage.html": "advanced_usage",
"administration.html": "administration",
"configuration.html": "configuration",
"api.html": "api",
"faq.html": "faq",
"troubleshooting.html": "troubleshooting",
"extending.html": "development",
"scanners.html": "",
"screenshots.html": "",
"changelog.html": "changelog",
}
const path = (RTD_TO_MKD[window.location.pathname.substring(window.location.pathname.lastIndexOf("/") + 1)] ?? "") + "/";
const hash = window.location.hash;
const redirectURL = new URL(path + hash, "https://docs.paperless-ngx.com/");
console.log(`Redirecting to ${redirectURL} in 3 seconds...`);
setTimeout(() => {
window.location.replace(redirectURL);
}, 3000);
</script>
{{ super() }}
{% endblock %}

View File

@@ -1,499 +1,11 @@
.. _administration:
**************
Administration
**************
.. _administration-backup:
.. cssclass:: redirect-notice
Making backups
##############
The Paperless-ngx documentation has permanently moved.
Multiple options exist for making backups of your paperless instance,
depending on how you installed paperless.
Before making backups, make sure that paperless is not running.
Options available to any installation of paperless:
* Use the :ref:`document exporter <utilities-exporter>`.
The document exporter exports all your documents, thumbnails and
metadata to a specific folder. You may import your documents into a
fresh instance of paperless again or store your documents in another
DMS with this export.
* The document exporter is also able to update an already existing export.
Therefore, incremental backups with ``rsync`` are entirely possible.
.. caution::
You cannot import the export generated with one version of paperless in a
different version of paperless. The export contains an exact image of the
database, and migrations may change the database layout.
Options available to docker installations:
* Backup the docker volumes. These usually reside within
``/var/lib/docker/volumes`` on the host and you need to be root in order
to access them.
Paperless uses 3 volumes:
* ``paperless_media``: This is where your documents are stored.
* ``paperless_data``: This is where auxillary data is stored. This
folder also contains the SQLite database, if you use it.
* ``paperless_pgdata``: Exists only if you use PostgreSQL and contains
the database.
Options available to bare-metal and non-docker installations:
* Backup the entire paperless folder. This ensures that if your paperless instance
crashes at some point or your disk fails, you can simply copy the folder back
into place and it works.
When using PostgreSQL, you'll also have to backup the database.
.. _migrating-restoring:
Restoring
=========
.. _administration-updating:
Updating Paperless
##################
Docker Route
============
If a new release of paperless-ngx is available, upgrading depends on how you
installed paperless-ngx in the first place. The releases are available at the
`release page <https://github.com/paperless-ngx/paperless-ngx/releases>`_.
First of all, ensure that paperless is stopped.
.. code:: shell-session
$ cd /path/to/paperless
$ docker-compose down
After that, :ref:`make a backup <administration-backup>`.
A. If you pull the image from the docker hub, all you need to do is:
.. code:: shell-session
$ docker-compose pull
$ docker-compose up
The docker-compose files refer to the ``latest`` version, which is always the latest
stable release.
B. If you built the image yourself, do the following:
.. code:: shell-session
$ git pull
$ docker-compose build
$ docker-compose up
Running ``docker-compose up`` will also apply any new database migrations.
If you see everything working, press CTRL+C once to gracefully stop paperless.
Then you can start paperless-ngx with ``-d`` to have it run in the background.
.. note::
In version 0.9.14, the update process was changed. In 0.9.13 and earlier, the
docker-compose files specified exact versions and pull won't automatically
update to newer versions. In order to enable updates as described above, either
get the new ``docker-compose.yml`` file from `here <https://github.com/paperless-ngx/paperless-ngx/tree/master/docker/compose>`_
or edit the ``docker-compose.yml`` file, find the line that says
.. code::
image: ghcr.io/paperless-ngx/paperless-ngx:0.9.x
and replace the version with ``latest``:
.. code::
image: ghcr.io/paperless-ngx/paperless-ngx:latest
Bare Metal Route
================
After grabbing the new release and unpacking the contents, do the following:
1. Update dependencies. New paperless version may require additional
dependencies. The dependencies required are listed in the section about
:ref:`bare metal installations <setup-bare_metal>`.
2. Update python requirements. Keep in mind to activate your virtual environment
before that, if you use one.
.. code:: shell-session
$ pip install -r requirements.txt
3. Migrate the database.
.. code:: shell-session
$ cd src
$ python3 manage.py migrate
This might not actually do anything. Not every new paperless version comes with new
database migrations.
Downgrading Paperless
#####################
Downgrades are possible. However, some updates also contain database migrations (these change the layout of the database and may move data).
In order to move back from a version that applied database migrations, you'll have to revert the database migration *before* downgrading,
and then downgrade paperless.
This table lists the compatible versions for each database migration number.
+------------------+-----------------+
| Migration number | Version range |
+------------------+-----------------+
| 1011 | 1.0.0 |
+------------------+-----------------+
| 1012 | 1.1.0 - 1.2.1 |
+------------------+-----------------+
| 1014 | 1.3.0 - 1.3.1 |
+------------------+-----------------+
| 1016 | 1.3.2 - current |
+------------------+-----------------+
Execute the following management command to migrate your database:
.. code:: shell-session
$ python3 manage.py migrate documents <migration number>
.. note::
Some migrations cannot be undone. The command will issue errors if that happens.
.. _utilities-management-commands:
Management utilities
####################
Paperless comes with some management commands that perform various maintenance
tasks on your paperless instance. You can invoke these commands in the following way:
With docker-compose, while paperless is running:
.. code:: shell-session
$ cd /path/to/paperless
$ docker-compose exec webserver <command> <arguments>
With docker, while paperless is running:
.. code:: shell-session
$ docker exec -it <container-name> <command> <arguments>
Bare metal:
.. code:: shell-session
$ cd /path/to/paperless/src
$ python3 manage.py <command> <arguments>
All commands have built-in help, which can be accessed by executing them with
the argument ``--help``.
.. _utilities-exporter:
Document exporter
=================
The document exporter exports all your data from paperless into a folder for
backup or migration to another DMS.
If you use the document exporter within a cronjob to backup your data you might use the ``-T`` flag behind exec to suppress "The input device is not a TTY" errors. For example: ``docker-compose exec -T webserver document_exporter ../export``
.. code::
document_exporter target [-c] [-f] [-d]
optional arguments:
-c, --compare-checksums
-f, --use-filename-format
-d, --delete
``target`` is a folder to which the data gets written. This includes documents,
thumbnails and a ``manifest.json`` file. The manifest contains all metadata from
the database (correspondents, tags, etc).
When you use the provided docker compose script, specify ``../export`` as the
target. This path inside the container is automatically mounted on your host on
the folder ``export``.
If the target directory already exists and contains files, paperless will assume
that the contents of the export directory are a previous export and will attempt
to update the previous export. Paperless will only export changed and added files.
Paperless determines whether a file has changed by inspecting the file attributes
"date/time modified" and "size". If that does not work out for you, specify
``--compare-checksums`` and paperless will attempt to compare file checksums instead.
This is slower.
Paperless will not remove any existing files in the export directory. If you want
paperless to also remove files that do not belong to the current export such as files
from deleted documents, specify ``--delete``. Be careful when pointing paperless to
a directory that already contains other files.
The filenames generated by this command follow the format
``[date created] [correspondent] [title].[extension]``.
If you want paperless to use ``PAPERLESS_FILENAME_FORMAT`` for exported filenames
instead, specify ``--use-filename-format``.
.. _utilities-importer:
Document importer
=================
The document importer takes the export produced by the `Document exporter`_ and
imports it into paperless.
The importer works just like the exporter. You point it at a directory, and
the script does the rest of the work:
.. code::
document_importer source
When you use the provided docker compose script, put the export inside the
``export`` folder in your paperless source directory. Specify ``../export``
as the ``source``.
.. _utilities-retagger:
Document retagger
=================
Say you've imported a few hundred documents and now want to introduce
a tag or set up a new correspondent, and apply its matching to all of
the currently-imported docs. This problem is common enough that
there are tools for it.
.. code::
document_retagger [-h] [-c] [-T] [-t] [-i] [--use-first] [-f]
optional arguments:
-c, --correspondent
-T, --tags
-t, --document_type
-i, --inbox-only
--use-first
-f, --overwrite
Run this after changing or adding matching rules. It'll loop over all
of the documents in your database and attempt to match documents
according to the new rules.
Specify any combination of ``-c``, ``-T`` and ``-t`` to have the
retagger perform matching of the specified metadata type. If you don't
specify any of these options, the document retagger won't do anything.
Specify ``-i`` to have the document retagger work on documents tagged
with inbox tags only. This is useful when you don't want to mess with
your already processed documents.
When multiple document types or correspondents match a single document,
the retagger won't assign these to the document. Specify ``--use-first``
to override this behavior and just use the first correspondent or type
it finds. This option does not apply to tags, since any amount of tags
can be applied to a document.
Finally, ``-f`` specifies that you wish to overwrite already assigned
correspondents, types and/or tags. The default behavior is to not
assign correspondents and types to documents that have this data already
assigned. ``-f`` works differently for tags: By default, only additional tags get
added to documents, no tags will be removed. With ``-f``, tags that don't
match a document anymore get removed as well.
Managing the Automatic matching algorithm
=========================================
The *Auto* matching algorithm requires a trained neural network to work.
This network needs to be updated whenever somethings in your data
changes. The docker image takes care of that automatically with the task
scheduler. You can manually renew the classifier by invoking the following
management command:
.. code::
document_create_classifier
This command takes no arguments.
.. _`administration-index`:
Managing the document search index
==================================
The document search index is responsible for delivering search results for the
website. The document index is automatically updated whenever documents get
added to, changed, or removed from paperless. However, if the search yields
non-existing documents or won't find anything, you may need to recreate the
index manually.
.. code::
document_index {reindex,optimize}
Specify ``reindex`` to have the index created from scratch. This may take some
time.
Specify ``optimize`` to optimize the index. This updates certain aspects of
the index and usually makes queries faster and also ensures that the
autocompletion works properly. This command is regularly invoked by the task
scheduler.
.. _utilities-renamer:
Managing filenames
==================
If you use paperless' feature to
:ref:`assign custom filenames to your documents <advanced-file_name_handling>`,
you can use this command to move all your files after changing
the naming scheme.
.. warning::
Since this command moves you documents around alot, it is advised to to
a backup before. The renaming logic is robust and will never overwrite
or delete a file, but you can't ever be careful enough.
.. code::
document_renamer
The command takes no arguments and processes all your documents at once.
Learn how to use :ref:`Management Utilities<Management utilities>`.
.. _utilities-sanity-checker:
Sanity checker
==============
Paperless has a built-in sanity checker that inspects your document collection for issues.
The issues detected by the sanity checker are as follows:
* Missing original files.
* Missing archive files.
* Inaccessible original files due to improper permissions.
* Inaccessible archive files due to improper permissions.
* Corrupted original documents by comparing their checksum against what is stored in the database.
* Corrupted archive documents by comparing their checksum against what is stored in the database.
* Missing thumbnails.
* Inaccessible thumbnails due to improper permissions.
* Documents without any content (warning).
* Orphaned files in the media directory (warning). These are files that are not referenced by any document im paperless.
.. code::
document_sanity_checker
The command takes no arguments. Depending on the size of your document archive, this may take some time.
Fetching e-mail
===============
Paperless automatically fetches your e-mail every 10 minutes by default. If
you want to invoke the email consumer manually, call the following management
command:
.. code::
mail_fetcher
The command takes no arguments and processes all your mail accounts and rules.
.. _utilities-archiver:
Creating archived documents
===========================
Paperless stores archived PDF/A documents alongside your original documents.
These archived documents will also contain selectable text for image-only
originals.
These documents are derived from the originals, which are always stored
unmodified. If coming from an earlier version of paperless, your documents
won't have archived versions.
This command creates PDF/A documents for your documents.
.. code::
document_archiver --overwrite --document <id>
This command will only attempt to create archived documents when no archived
document exists yet, unless ``--overwrite`` is specified. If ``--document <id>``
is specified, the archiver will only process that document.
.. note::
This command essentially performs OCR on all your documents again,
according to your settings. If you run this with ``PAPERLESS_OCR_MODE=redo``,
it will potentially run for a very long time. You can cancel the command
at any time, since this command will skip already archived versions the next time
it is run.
.. note::
Some documents will cause errors and cannot be converted into PDF/A documents,
such as encrypted PDF documents. The archiver will skip over these documents
each time it sees them.
.. _utilities-encyption:
Managing encryption
===================
Documents can be stored in Paperless using GnuPG encryption.
.. danger::
Encryption is deprecated since paperless-ngx 0.9 and doesn't really provide any
additional security, since you have to store the passphrase in a configuration
file on the same system as the encrypted documents for paperless to work.
Furthermore, the entire text content of the documents is stored plain in the
database, even if your documents are encrypted. Filenames are not encrypted as
well.
Also, the web server provides transparent access to your encrypted documents.
Consider running paperless on an encrypted filesystem instead, which will then
at least provide security against physical hardware theft.
Enabling encryption
-------------------
Enabling encryption is no longer supported.
Disabling encryption
--------------------
Basic usage to disable encryption of your document store:
(Note: If ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here)
.. code::
decrypt_documents [--passphrase SECR3TP4SSPHRA$E]
You will be redirected shortly...

View File

@@ -1,291 +1,11 @@
.. _advanced_usage:
***************
Advanced topics
***************
Paperless offers a couple features that automate certain tasks and make your life
easier.
.. cssclass:: redirect-notice
.. _advanced-matching:
The Paperless-ngx documentation has permanently moved.
Matching tags, correspondents and document types
################################################
Paperless will compare the matching algorithms defined by every tag and
correspondent already set in your database to see if they apply to the text in
a document. In other words, if you defined a tag called ``Home Utility``
that had a ``match`` property of ``bc hydro`` and a ``matching_algorithm`` of
``literal``, Paperless will automatically tag your newly-consumed document with
your ``Home Utility`` tag so long as the text ``bc hydro`` appears in the body
of the document somewhere.
The matching logic is quite powerful. It supports searching the text of your
document with different algorithms, and as such, some experimentation may be
necessary to get things right.
In order to have a tag, correspondent, or type assigned automatically to newly
consumed documents, assign a match and matching algorithm using the web
interface. These settings define when to assign correspondents, tags, and types
to documents.
The following algorithms are available:
* **Any:** Looks for any occurrence of any word provided in match in the PDF.
If you define the match as ``Bank1 Bank2``, it will match documents containing
either of these terms.
* **All:** Requires that every word provided appears in the PDF, albeit not in the
order provided.
* **Literal:** Matches only if the match appears exactly as provided (i.e. preserve ordering) in the PDF.
* **Regular expression:** Parses the match as a regular expression and tries to
find a match within the document.
* **Fuzzy match:** I dont know. Look at the source.
* **Auto:** Tries to automatically match new documents. This does not require you
to set a match. See the notes below.
When using the *any* or *all* matching algorithms, you can search for terms
that consist of multiple words by enclosing them in double quotes. For example,
defining a match text of ``"Bank of America" BofA`` using the *any* algorithm,
will match documents that contain either "Bank of America" or "BofA", but will
not match documents containing "Bank of South America".
Then just save your tag/correspondent and run another document through the
consumer. Once complete, you should see the newly-created document,
automatically tagged with the appropriate data.
.. _advanced-automatic_matching:
Automatic matching
==================
Paperless-ngx comes with a new matching algorithm called *Auto*. This matching
algorithm tries to assign tags, correspondents, and document types to your
documents based on how you have already assigned these on existing documents. It
uses a neural network under the hood.
If, for example, all your bank statements of your account 123 at the Bank of
America are tagged with the tag "bofa_123" and the matching algorithm of this
tag is set to *Auto*, this neural network will examine your documents and
automatically learn when to assign this tag.
Paperless tries to hide much of the involved complexity with this approach.
However, there are a couple caveats you need to keep in mind when using this
feature:
* Changes to your documents are not immediately reflected by the matching
algorithm. The neural network needs to be *trained* on your documents after
changes. Paperless periodically (default: once each hour) checks for changes
and does this automatically for you.
* The Auto matching algorithm only takes documents into account which are NOT
placed in your inbox (i.e. have any inbox tags assigned to them). This ensures
that the neural network only learns from documents which you have correctly
tagged before.
* The matching algorithm can only work if there is a correlation between the
tag, correspondent, or document type and the document itself. Your bank
statements usually contain your bank account number and the name of the bank,
so this works reasonably well, However, tags such as "TODO" cannot be
automatically assigned.
* The matching algorithm needs a reasonable number of documents to identify when
to assign tags, correspondents, and types. If one out of a thousand documents
has the correspondent "Very obscure web shop I bought something five years
ago", it will probably not assign this correspondent automatically if you buy
something from them again. The more documents, the better.
* Paperless also needs a reasonable amount of negative examples to decide when
not to assign a certain tag, correspondent or type. This will usually be the
case as you start filling up paperless with documents. Example: If all your
documents are either from "Webshop" and "Bank", paperless will assign one of
these correspondents to ANY new document, if both are set to automatic matching.
Hooking into the consumption process
####################################
Sometimes you may want to do something arbitrary whenever a document is
consumed. Rather than try to predict what you may want to do, Paperless lets
you execute scripts of your own choosing just before or after a document is
consumed using a couple simple hooks.
Just write a script, put it somewhere that Paperless can read & execute, and
then put the path to that script in ``paperless.conf`` or ``docker-compose.env`` with the variable name
of either ``PAPERLESS_PRE_CONSUME_SCRIPT`` or
``PAPERLESS_POST_CONSUME_SCRIPT``.
.. important::
These scripts are executed in a **blocking** process, which means that if
a script takes a long time to run, it can significantly slow down your
document consumption flow. If you want things to run asynchronously,
you'll have to fork the process in your script and exit.
Pre-consumption script
======================
Executed after the consumer sees a new document in the consumption folder, but
before any processing of the document is performed. This script receives exactly
one argument:
* Document file name
A simple but common example for this would be creating a simple script like
this:
``/usr/local/bin/ocr-pdf``
.. code:: bash
#!/usr/bin/env bash
pdf2pdfocr.py -i ${1}
``/etc/paperless.conf``
.. code:: bash
...
PAPERLESS_PRE_CONSUME_SCRIPT="/usr/local/bin/ocr-pdf"
...
This will pass the path to the document about to be consumed to ``/usr/local/bin/ocr-pdf``,
which will in turn call `pdf2pdfocr.py`_ on your document, which will then
overwrite the file with an OCR'd version of the file and exit. At which point,
the consumption process will begin with the newly modified file.
.. _pdf2pdfocr.py: https://github.com/LeoFCardoso/pdf2pdfocr
.. _advanced-post_consume_script:
Post-consumption script
=======================
Executed after the consumer has successfully processed a document and has moved it
into paperless. It receives the following arguments:
* Document id
* Generated file name
* Source path
* Thumbnail path
* Download URL
* Thumbnail URL
* Correspondent
* Tags
The script can be in any language, but for a simple shell script
example, you can take a look at `post-consumption-example.sh`_ in this project.
The post consumption script cannot cancel the consumption process.
Docker
------
Assumed you have ``/home/foo/paperless-ngx/scripts/post-consumption-example.sh``.
You can pass that script into the consumer container via a host mount in your ``docker-compose.yml``.
.. code:: bash
...
consumer:
...
volumes:
...
- /home/paperless-ngx/scripts:/path/in/container/scripts/
...
Example (docker-compose.yml): ``- /home/foo/paperless-ngx/scripts:/usr/src/paperless/scripts``
which in turn requires the variable ``PAPERLESS_POST_CONSUME_SCRIPT`` in ``docker-compose.env`` to point to ``/path/in/container/scripts/post-consumption-example.sh``.
Example (docker-compose.env): ``PAPERLESS_POST_CONSUME_SCRIPT=/usr/src/paperless/scripts/post-consumption-example.sh``
Troubleshooting:
- Monitor the docker-compose log ``cd ~/paperless-ngx; docker-compose logs -f``
- Check your script's permission e.g. in case of permission error ``sudo chmod 755 post-consumption-example.sh``
- Pipe your scripts's output to a log file e.g. ``echo "${DOCUMENT_ID}" | tee --append /usr/src/paperless/scripts/post-consumption-example.log``
.. _post-consumption-example.sh: https://github.com/jonaswinkler/paperless-ngx/blob/master/scripts/post-consumption-example.sh
.. _advanced-file_name_handling:
File name handling
##################
By default, paperless stores your documents in the media directory and renames them
using the identifier which it has assigned to each document. You will end up getting
files like ``0000123.pdf`` in your media directory. This isn't necessarily a bad
thing, because you normally don't have to access these files manually. However, if
you wish to name your files differently, you can do that by adjusting the
``PAPERLESS_FILENAME_FORMAT`` configuration option.
This variable allows you to configure the filename (folders are allowed) using
placeholders. For example, configuring this to
.. code:: bash
PAPERLESS_FILENAME_FORMAT={created_year}/{correspondent}/{title}
will create a directory structure as follows:
.. code::
2019/
My bank/
Statement January.pdf
Statement February.pdf
2020/
My bank/
Statement January.pdf
Letter.pdf
Letter_01.pdf
Shoe store/
My new shoes.pdf
.. danger::
Do not manually move your files in the media folder. Paperless remembers the
last filename a document was stored as. If you do rename a file, paperless will
report your files as missing and won't be able to find them.
Paperless provides the following placeholders withing filenames:
* ``{asn}``: The archive serial number of the document, or "none".
* ``{correspondent}``: The name of the correspondent, or "none".
* ``{document_type}``: The name of the document type, or "none".
* ``{tag_list}``: A comma separated list of all tags assigned to the document.
* ``{title}``: The title of the document.
* ``{created}``: The full date (ISO format) the document was created.
* ``{created_year}``: Year created only.
* ``{created_month}``: Month created only (number 01-12).
* ``{created_day}``: Day created only (number 01-31).
* ``{added}``: The full date (ISO format) the document was added to paperless.
* ``{added_year}``: Year added only.
* ``{added_month}``: Month added only (number 01-12).
* ``{added_day}``: Day added only (number 01-31).
Paperless will try to conserve the information from your database as much as possible.
However, some characters that you can use in document titles and correspondent names (such
as ``: \ /`` and a couple more) are not allowed in filenames and will be replaced with dashes.
If paperless detects that two documents share the same filename, paperless will automatically
append ``_01``, ``_02``, etc to the filename. This happens if all the placeholders in a filename
evaluate to the same value.
.. hint::
Paperless checks the filename of a document whenever it is saved. Therefore,
you need to update the filenames of your documents and move them after altering
this setting by invoking the :ref:`document renamer <utilities-renamer>`.
.. warning::
Make absolutely sure you get the spelling of the placeholders right, or else
paperless will use the default naming scheme instead.
.. caution::
As of now, you could totally tell paperless to store your files anywhere outside
the media directory by setting
.. code::
PAPERLESS_FILENAME_FORMAT=../../my/custom/location/{title}
However, keep in mind that inside docker, if files get stored outside of the
predefined volumes, they will be lost after a restart of paperless.
You will be redirected shortly...

View File

@@ -1,300 +1,12 @@
.. _api:
************
The REST API
************
Paperless makes use of the `Django REST Framework`_ standard API interface.
It provides a browsable API for most of its endpoints, which you can inspect
at ``http://<paperless-host>:<port>/api/``. This also documents most of the
available filters and ordering fields.
.. cssclass:: redirect-notice
.. _Django REST Framework: http://django-rest-framework.org/
The Paperless-ngx documentation has permanently moved.
The API provides 5 main endpoints:
* ``/api/documents/``: Full CRUD support, except POSTing new documents. See below.
* ``/api/correspondents/``: Full CRUD support.
* ``/api/document_types/``: Full CRUD support.
* ``/api/logs/``: Read-Only.
* ``/api/tags/``: Full CRUD support.
All of these endpoints except for the logging endpoint
allow you to fetch, edit and delete individual objects
by appending their primary key to the path, for example ``/api/documents/454/``.
The objects served by the document endpoint contain the following fields:
* ``id``: ID of the document. Read-only.
* ``title``: Title of the document.
* ``content``: Plain text content of the document.
* ``tags``: List of IDs of tags assigned to this document, or empty list.
* ``document_type``: Document type of this document, or null.
* ``correspondent``: Correspondent of this document or null.
* ``created``: The date at which this document was created.
* ``modified``: The date at which this document was last edited in paperless. Read-only.
* ``added``: The date at which this document was added to paperless. Read-only.
* ``archive_serial_number``: The identifier of this document in a physical document archive.
* ``original_file_name``: Verbose filename of the original document. Read-only.
* ``archived_file_name``: Verbose filename of the archived document. Read-only. Null if no archived document is available.
Downloading documents
#####################
In addition to that, the document endpoint offers these additional actions on
individual documents:
* ``/api/documents/<pk>/download/``: Download the document.
* ``/api/documents/<pk>/preview/``: Display the document inline,
without downloading it.
* ``/api/documents/<pk>/thumb/``: Download the PNG thumbnail of a document.
Paperless generates archived PDF/A documents from consumed files and stores both
the original files as well as the archived files. By default, the endpoints
for previews and downloads serve the archived file, if it is available.
Otherwise, the original file is served.
Some document cannot be archived.
The endpoints correctly serve the response header fields ``Content-Disposition``
and ``Content-Type`` to indicate the filename for download and the type of content of
the document.
In order to download or preview the original document when an archied document is available,
supply the query parameter ``original=true``.
.. hint::
Paperless used to provide these functionality at ``/fetch/<pk>/preview``,
``/fetch/<pk>/thumb`` and ``/fetch/<pk>/doc``. Redirects to the new URLs
are in place. However, if you use these old URLs to access documents, you
should update your app or script to use the new URLs.
Getting document metadata
#########################
The api also has an endpoint to retrieve read-only metadata about specific documents. this
information is not served along with the document objects, since it requires reading
files and would therefore slow down document lists considerably.
Access the metadata of a document with an ID ``id`` at ``/api/documents/<id>/metadata/``.
The endpoint reports the following data:
* ``original_checksum``: MD5 checksum of the original document.
* ``original_size``: Size of the original document, in bytes.
* ``original_mime_type``: Mime type of the original document.
* ``media_filename``: Current filename of the document, under which it is stored inside the media directory.
* ``has_archive_version``: True, if this document is archived, false otherwise.
* ``original_metadata``: A list of metadata associated with the original document. See below.
* ``archive_checksum``: MD5 checksum of the archived document, or null.
* ``archive_size``: Size of the archived document in bytes, or null.
* ``archive_metadata``: Metadata associated with the archived document, or null. See below.
File metadata is reported as a list of objects in the following form:
.. code:: json
[
{
"namespace": "http://ns.adobe.com/pdf/1.3/",
"prefix": "pdf",
"key": "Producer",
"value": "SparklePDF, Fancy edition"
},
]
``namespace`` and ``prefix`` can be null. The actual metadata reported depends on the file type and the metadata
available in that specific document. Paperless only reports PDF metadata at this point.
Authorization
#############
The REST api provides three different forms of authentication.
1. Basic authentication
Authorize by providing a HTTP header in the form
.. code::
Authorization: Basic <credentials>
where ``credentials`` is a base64-encoded string of ``<username>:<password>``
2. Session authentication
When you're logged into paperless in your browser, you're automatically
logged into the API as well and don't need to provide any authorization
headers.
3. Token authentication
Paperless also offers an endpoint to acquire authentication tokens.
POST a username and password as a form or json string to ``/api/token/``
and paperless will respond with a token, if the login data is correct.
This token can be used to authenticate other requests with the
following HTTP header:
.. code::
Authorization: Token <token>
Tokens can be managed and revoked in the paperless admin.
Searching for documents
#######################
Full text searching is available on the ``/api/documents/`` endpoint. Two specific
query parameters cause the API to return full text search results:
* ``/api/documents/?query=your%20search%20query``: Search for a document using a full text query.
For details on the syntax, see :ref:`basic-usage_searching`.
* ``/api/documents/?more_like=1234``: Search for documents similar to the document with id 1234.
Pagination works exactly the same as it does for normal requests on this endpoint.
Certain limitations apply to full text queries:
* Results are always sorted by search score. The results matching the query best will show up first.
* Only a small subset of filtering parameters are supported.
Furthermore, each returned document has an additional ``__search_hit__`` attribute with various information
about the search results:
.. code::
{
"count": 31,
"next": "http://localhost:8000/api/documents/?page=2&query=test",
"previous": null,
"results": [
...
{
"id": 123,
"title": "title",
"content": "content",
...
"__search_hit__": {
"score": 0.343,
"highlights": "text <span class=\"match\">Test</span> text",
"rank": 23
}
},
...
]
}
* ``score`` is an indication how well this document matches the query relative to the other search results.
* ``highlights`` is an excerpt from the document content and highlights the search terms with ``<span>`` tags as shown above.
* ``rank`` is the index of the search results. The first result will have rank 0.
``/api/search/autocomplete/``
=============================
Get auto completions for a partial search term.
Query parameters:
* ``term``: The incomplete term.
* ``limit``: Amount of results. Defaults to 10.
Results returned by the endpoint are ordered by importance of the term in the
document index. The first result is the term that has the highest Tf/Idf score
in the index.
.. code:: json
[
"term1",
"term3",
"term6",
"term4"
]
.. _api-file_uploads:
POSTing documents
#################
The API provides a special endpoint for file uploads:
``/api/documents/post_document/``
POST a multipart form to this endpoint, where the form field ``document`` contains
the document that you want to upload to paperless. The filename is sanitized and
then used to store the document in a temporary directory, and the consumer will
be instructed to consume the document from there.
The endpoint supports the following optional form fields:
* ``title``: Specify a title that the consumer should use for the document.
* ``correspondent``: Specify the ID of a correspondent that the consumer should use for the document.
* ``document_type``: Similar to correspondent.
* ``tags``: Similar to correspondent. Specify this multiple times to have multiple tags added
to the document.
The endpoint will immediately return "OK" if the document consumption process
was started successfully. No additional status information about the consumption
process itself is available, since that happens in a different process.
.. _api-versioning:
API Versioning
##############
The REST API is versioned since Paperless-ngx 1.3.0.
* Versioning ensures that changes to the API don't break older clients.
* Clients specify the specific version of the API they wish to use with every request and Paperless will handle the request using the specified API version.
* Even if the underlying data model changes, older API versions will always serve compatible data.
* If no version is specified, Paperless will serve version 1 to ensure compatibility with older clients that do not request a specific API version.
API versions are specified by submitting an additional HTTP ``Accept`` header with every request:
.. code::
Accept: application/json; version=6
If an invalid version is specified, Paperless 1.3.0 will respond with "406 Not Acceptable" and an error message in the body.
Earlier versions of Paperless will serve API version 1 regardless of whether a version is specified via the ``Accept`` header.
If a client wishes to verify whether it is compatible with any given server, the following procedure should be performed:
1. Perform an *authenticated* request against any API endpoint. If the server is on version 1.3.0 or newer, the server will
add two custom headers to the response:
.. code::
X-Api-Version: 2
X-Version: 1.3.0
2. Determine whether the client is compatible with this server based on the presence/absence of these headers and their values if present.
API Changelog
=============
Version 1
---------
Initial API version.
Version 2
---------
* Added field ``Tag.color``. This read/write string field contains a hex color such as ``#a6cee3``.
* Added read-only field ``Tag.text_color``. This field contains the text color to use for a specific tag, which is either black or white depending on the brightness of ``Tag.color``.
* Removed field ``Tag.colour``.
You will be redirected shortly...

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,8 @@ import sphinx_rtd_theme
__version__ = None
__full_version_str__ = None
__major_minor_version_str__ = None
exec(open("../src/paperless/version.py").read())
@@ -12,13 +14,17 @@ extensions = [
"sphinx.ext.imgmath",
"sphinx.ext.viewcode",
"sphinx_rtd_theme",
"myst_parser",
]
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']
templates_path = ["_templates"]
# The suffix of source filenames.
source_suffix = ".rst"
source_suffix = {
".rst": "restructuredtext",
".md": "markdown",
}
# The encoding of source files.
# source_encoding = 'utf-8-sig'
@@ -41,9 +47,9 @@ copyright = "2015-2022, Daniel Quinn, Jonas Winkler, and the paperless-ngx team"
#
# The short X.Y version.
version = ".".join([str(_) for _ in __version__[:2]])
version = __major_minor_version_str__
# The full version, including alpha/beta/rc tags.
release = ".".join([str(_) for _ in __version__[:3]])
release = __full_version_str__
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -119,6 +125,16 @@ html_theme_path = []
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
# These paths are either relative to html_static_path
# or fully qualified paths (eg. https://...)
html_css_files = [
"css/custom.css",
]
html_js_files = [
"js/darkmode.js",
]
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.

View File

@@ -4,751 +4,9 @@
Configuration
*************
Paperless provides a wide range of customizations.
Depending on how you run paperless, these settings have to be defined in different
places.
* If you run paperless on docker, ``paperless.conf`` is not used. Rather, configure
paperless by copying necessary options to ``docker-compose.env``.
* If you are running paperless on anything else, paperless will search for the
configuration file in these locations and use the first one it finds:
.. cssclass:: redirect-notice
.. code::
The Paperless-ngx documentation has permanently moved.
/path/to/paperless/paperless.conf
/etc/paperless.conf
/usr/local/etc/paperless.conf
Required services
#################
PAPERLESS_REDIS=<url>
This is required for processing scheduled tasks such as email fetching, index
optimization and for training the automatic document matcher.
Defaults to redis://localhost:6379.
PAPERLESS_DBHOST=<hostname>
By default, sqlite is used as the database backend. This can be changed here.
Set PAPERLESS_DBHOST and PostgreSQL will be used instead of mysql.
PAPERLESS_DBPORT=<port>
Adjust port if necessary.
Default is 5432.
PAPERLESS_DBNAME=<name>
Database name in PostgreSQL.
Defaults to "paperless".
PAPERLESS_DBUSER=<name>
Database user in PostgreSQL.
Defaults to "paperless".
PAPERLESS_DBPASS=<password>
Database password for PostgreSQL.
Defaults to "paperless".
PAPERLESS_DBSSLMODE=<mode>
SSL mode to use when connecting to PostgreSQL.
See `the official documentation about sslmode <https://www.postgresql.org/docs/current/libpq-ssl.html>`_.
Default is ``prefer``.
Paths and folders
#################
PAPERLESS_CONSUMPTION_DIR=<path>
This where your documents should go to be consumed. Make sure that it exists
and that the user running the paperless service can read/write its contents
before you start Paperless.
Don't change this when using docker, as it only changes the path within the
container. Change the local consumption directory in the docker-compose.yml
file instead.
Defaults to "../consume/", relative to the "src" directory.
PAPERLESS_DATA_DIR=<path>
This is where paperless stores all its data (search index, SQLite database,
classification model, etc).
Defaults to "../data/", relative to the "src" directory.
PAPERLESS_TRASH_DIR=<path>
Instead of removing deleted documents, they are moved to this directory.
This must be writeable by the user running paperless. When running inside
docker, ensure that this path is within a permanent volume (such as
"../media/trash") so it won't get lost on upgrades.
Defaults to empty (i.e. really delete documents).
PAPERLESS_MEDIA_ROOT=<path>
This is where your documents and thumbnails are stored.
You can set this and PAPERLESS_DATA_DIR to the same folder to have paperless
store all its data within the same volume.
Defaults to "../media/", relative to the "src" directory.
PAPERLESS_STATICDIR=<path>
Override the default STATIC_ROOT here. This is where all static files
created using "collectstatic" manager command are stored.
Unless you're doing something fancy, there is no need to override this.
Defaults to "../static/", relative to the "src" directory.
PAPERLESS_FILENAME_FORMAT=<format>
Changes the filenames paperless uses to store documents in the media directory.
See :ref:`advanced-file_name_handling` for details.
Default is none, which disables this feature.
PAPERLESS_LOGGING_DIR=<path>
This is where paperless will store log files.
Defaults to "``PAPERLESS_DATA_DIR``/log/".
Logging
#######
PAPERLESS_LOGROTATE_MAX_SIZE=<num>
Maximum file size for log files before they are rotated, in bytes.
Defaults to 1 MiB.
PAPERLESS_LOGROTATE_MAX_BACKUPS=<num>
Number of rotated log files to keep.
Defaults to 20.
Hosting & Security
##################
PAPERLESS_SECRET_KEY=<key>
Paperless uses this to make session tokens. If you expose paperless on the
internet, you need to change this, since the default secret is well known.
Use any sequence of characters. The more, the better. You don't need to
remember this. Just face-roll your keyboard.
Default is listed in the file ``src/paperless/settings.py``.
PAPERLESS_ALLOWED_HOSTS<comma-separated-list>
If you're planning on putting Paperless on the open internet, then you
really should set this value to the domain name you're using. Failing to do
so leaves you open to HTTP host header attacks:
https://docs.djangoproject.com/en/3.1/topics/security/#host-header-validation
Just remember that this is a comma-separated list, so "example.com" is fine,
as is "example.com,www.example.com", but NOT " example.com" or "example.com,"
Defaults to "*", which is all hosts.
PAPERLESS_CORS_ALLOWED_HOSTS<comma-separated-list>
You need to add your servers to the list of allowed hosts that can do CORS
calls. Set this to your public domain name.
Defaults to "http://localhost:8000".
PAPERLESS_FORCE_SCRIPT_NAME=<path>
To host paperless under a subpath url like example.com/paperless you set
this value to /paperless. No trailing slash!
Defaults to none, which hosts paperless at "/".
PAPERLESS_STATIC_URL=<path>
Override the STATIC_URL here. Unless you're hosting Paperless off a
subdomain like /paperless/, you probably don't need to change this.
Defaults to "/static/".
PAPERLESS_AUTO_LOGIN_USERNAME=<username>
Specify a username here so that paperless will automatically perform login
with the selected user.
.. danger::
Do not use this when exposing paperless on the internet. There are no
checks in place that would prevent you from doing this.
Defaults to none, which disables this feature.
PAPERLESS_ADMIN_USER=<username>
If this environment variable is specified, Paperless automatically creates
a superuser with the provided username at start. This is useful in cases
where you can not run the `createsuperuser` command seperately, such as Kubernetes
or AWS ECS.
Requires `PAPERLESS_ADMIN_PASSWORD` to be set.
.. note::
This will not change an existing [super]user's password, nor will
it recreate a user that already exists. You can leave this throughout
the lifecycle of the containers.
PAPERLESS_ADMIN_MAIL=<email>
(Optional) Specify superuser email address. Only used when
`PAPERLESS_ADMIN_USER` is set.
Defaults to ``root@localhost``.
PAPERLESS_ADMIN_PASSWORD=<password>
Only used when `PAPERLESS_ADMIN_USER` is set.
This will be the password of the automatically created superuser.
PAPERLESS_COOKIE_PREFIX=<str>
Specify a prefix that is added to the cookies used by paperless to identify
the currently logged in user. This is useful for when you're running two
instances of paperless on the same host.
After changing this, you will have to login again.
Defaults to ``""``, which does not alter the cookie names.
PAPERLESS_ENABLE_HTTP_REMOTE_USER=<bool>
Allows authentication via HTTP_REMOTE_USER which is used by some SSO
applications.
.. warning::
This will allow authentication by simply adding a ``Remote-User: <username>`` header
to a request. Use with care! You especially *must* ensure that any such header is not
passed from your proxy server to paperless.
If you're exposing paperless to the internet directly, do not use this.
Also see the warning `in the official documentation <https://docs.djangoproject.com/en/3.1/howto/auth-remote-user/#configuration>`.
Defaults to `false` which disables this feature.
PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME=<str>
If `PAPERLESS_ENABLE_HTTP_REMOTE_USER` is enabled, this property allows to
customize the name of the HTTP header from which the authenticated username
is extracted. Values are in terms of
[HttpRequest.META](https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.HttpRequest.META).
Thus, the configured value must start with `HTTP_` followed by the
normalized actual header name.
Defaults to `HTTP_REMOTE_USER`.
PAPERLESS_LOGOUT_REDIRECT_URL=<str>
URL to redirect the user to after a logout. This can be used together with
`PAPERLESS_ENABLE_HTTP_REMOTE_USER` to redirect the user back to the SSO
application's logout page.
Defaults to None, which disables this feature.
.. _configuration-ocr:
OCR settings
############
Paperless uses `OCRmyPDF <https://ocrmypdf.readthedocs.io/en/latest/>`_ for
performing OCR on documents and images. Paperless uses sensible defaults for
most settings, but all of them can be configured to your needs.
PAPERLESS_OCR_LANGUAGE=<lang>
Customize the language that paperless will attempt to use when
parsing documents.
It should be a 3-letter language code consistent with ISO
639: https://www.loc.gov/standards/iso639-2/php/code_list.php
Set this to the language most of your documents are written in.
This can be a combination of multiple languages such as ``deu+eng``,
in which case tesseract will use whatever language matches best.
Keep in mind that tesseract uses much more cpu time with multiple
languages enabled.
Defaults to "eng".
Note: If your language contains a '-' such as chi-sim, you must use chi_sim
PAPERLESS_OCR_MODE=<mode>
Tell paperless when and how to perform ocr on your documents. Four modes
are available:
* ``skip``: Paperless skips all pages and will perform ocr only on pages
where no text is present. This is the safest option.
* ``skip_noarchive``: In addition to skip, paperless won't create an
archived version of your documents when it finds any text in them.
This is useful if you don't want to have two almost-identical versions
of your digital documents in the media folder. This is the fastest option.
* ``redo``: Paperless will OCR all pages of your documents and attempt to
replace any existing text layers with new text. This will be useful for
documents from scanners that already performed OCR with insufficient
results. It will also perform OCR on purely digital documents.
This option may fail on some documents that have features that cannot
be removed, such as forms. In this case, the text from the document is
used instead.
* ``force``: Paperless rasterizes your documents, converting any text
into images and puts the OCRed text on top. This works for all documents,
however, the resulting document may be significantly larger and text
won't appear as sharp when zoomed in.
The default is ``skip``, which only performs OCR when necessary and always
creates archived documents.
Read more about this in the `OCRmyPDF documentation <https://ocrmypdf.readthedocs.io/en/latest/advanced.html#when-ocr-is-skipped>`_.
PAPERLESS_OCR_CLEAN=<mode>
Tells paperless to use ``unpaper`` to clean any input document before
sending it to tesseract. This uses more resources, but generally results
in better OCR results. The following modes are available:
* ``clean``: Apply unpaper.
* ``clean-final``: Apply unpaper, and use the cleaned images to build the
output file instead of the original images.
* ``none``: Do not apply unpaper.
Defaults to ``clean``.
.. note::
``clean-final`` is incompatible with ocr mode ``redo``. When both
``clean-final`` and the ocr mode ``redo`` is configured, ``clean``
is used instead.
PAPERLESS_OCR_DESKEW=<bool>
Tells paperless to correct skewing (slight rotation of input images mainly
due to improper scanning)
Defaults to ``true``, which enables this feature.
.. note::
Deskewing is incompatible with ocr mode ``redo``. Deskewing will get
disabled automatically if ``redo`` is used as the ocr mode.
PAPERLESS_OCR_ROTATE_PAGES=<bool>
Tells paperless to correct page rotation (90°, 180° and 270° rotation).
If you notice that paperless is not rotating incorrectly rotated
pages (or vice versa), try adjusting the threshold up or down (see below).
Defaults to ``true``, which enables this feature.
PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD=<num>
Adjust the threshold for automatic page rotation by ``PAPERLESS_OCR_ROTATE_PAGES``.
This is an arbitrary value reported by tesseract. "15" is a very conservative value,
whereas "2" is a very aggressive option and will often result in correctly rotated pages
being rotated as well.
Defaults to "12".
PAPERLESS_OCR_OUTPUT_TYPE=<type>
Specify the the type of PDF documents that paperless should produce.
* ``pdf``: Modify the PDF document as little as possible.
* ``pdfa``: Convert PDF documents into PDF/A-2b documents, which is a
subset of the entire PDF specification and meant for storing
documents long term.
* ``pdfa-1``, ``pdfa-2``, ``pdfa-3`` to specify the exact version of
PDF/A you wish to use.
If not specified, ``pdfa`` is used. Remember that paperless also keeps
the original input file as well as the archived version.
PAPERLESS_OCR_PAGES=<num>
Tells paperless to use only the specified amount of pages for OCR. Documents
with less than the specified amount of pages get OCR'ed completely.
Specifying 1 here will only use the first page.
When combined with ``PAPERLESS_OCR_MODE=redo`` or ``PAPERLESS_OCR_MODE=force``,
paperless will not modify any text it finds on excluded pages and copy it
verbatim.
Defaults to 0, which disables this feature and always uses all pages.
PAPERLESS_OCR_IMAGE_DPI=<num>
Paperless will OCR any images you put into the system and convert them
into PDF documents. This is useful if your scanner produces images.
In order to do so, paperless needs to know the DPI of the image.
Most images from scanners will have this information embedded and
paperless will detect and use that information. In case this fails, it
uses this value as a fallback.
Set this to the DPI your scanner produces images at.
Default is none, which will automatically calculate image DPI so that
the produced PDF documents are A4 sized.
PAPERLESS_OCR_USER_ARGS=<json>
OCRmyPDF offers many more options. Use this parameter to specify any
additional arguments you wish to pass to OCRmyPDF. Since Paperless uses
the API of OCRmyPDF, you have to specify these in a format that can be
passed to the API. See `the API reference of OCRmyPDF <https://ocrmypdf.readthedocs.io/en/latest/api.html#reference>`_
for valid parameters. All command line options are supported, but they
use underscores instead of dashes.
.. caution::
Paperless has been tested to work with the OCR options provided
above. There are many options that are incompatible with each other,
so specifying invalid options may prevent paperless from consuming
any documents.
Specify arguments as a JSON dictionary. Keep note of lower case booleans
and double quoted parameter names and strings. Examples:
.. code:: json
{"deskew": true, "optimize": 3, "unpaper_args": "--pre-rotate 90"}
.. _configuration-tika:
Tika settings
#############
Paperless can make use of `Tika <https://tika.apache.org/>`_ and
`Gotenberg <https://gotenberg.dev/>`_ for parsing and
converting "Office" documents (such as ".doc", ".xlsx" and ".odt"). If you
wish to use this, you must provide a Tika server and a Gotenberg server,
configure their endpoints, and enable the feature.
PAPERLESS_TIKA_ENABLED=<bool>
Enable (or disable) the Tika parser.
Defaults to false.
PAPERLESS_TIKA_ENDPOINT=<url>
Set the endpoint URL were Paperless can reach your Tika server.
Defaults to "http://localhost:9998".
PAPERLESS_TIKA_GOTENBERG_ENDPOINT=<url>
Set the endpoint URL were Paperless can reach your Gotenberg server.
Defaults to "http://localhost:3000".
If you run paperless on docker, you can add those services to the docker-compose
file (see the provided ``docker-compose.tika.yml`` file for reference). The changes
requires are as follows:
.. code:: yaml
services:
# ...
webserver:
# ...
environment:
# ...
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
# ...
gotenberg:
image: gotenberg/gotenberg:7
restart: unless-stopped
environment:
CHROMIUM_DISABLE_ROUTES: 1
tika:
image: apache/tika
restart: unless-stopped
Add the configuration variables to the environment of the webserver (alternatively
put the configuration in the ``docker-compose.env`` file) and add the additional
services below the webserver service. Watch out for indentation.
Software tweaks
###############
PAPERLESS_TASK_WORKERS=<num>
Paperless does multiple things in the background: Maintain the search index,
maintain the automatic matching algorithm, check emails, consume documents,
etc. This variable specifies how many things it will do in parallel.
PAPERLESS_THREADS_PER_WORKER=<num>
Furthermore, paperless uses multiple threads when consuming documents to
speed up OCR. This variable specifies how many pages paperless will process
in parallel on a single document.
.. caution::
Ensure that the product
PAPERLESS_TASK_WORKERS * PAPERLESS_THREADS_PER_WORKER
does not exceed your CPU core count or else paperless will be extremely slow.
If you want paperless to process many documents in parallel, choose a high
worker count. If you want paperless to process very large documents faster,
use a higher thread per worker count.
The default is a balance between the two, according to your CPU core count,
with a slight favor towards threads per worker:
+----------------+---------+---------+
| CPU core count | Workers | Threads |
+----------------+---------+---------+
| 1 | 1 | 1 |
+----------------+---------+---------+
| 2 | 2 | 1 |
+----------------+---------+---------+
| 4 | 2 | 2 |
+----------------+---------+---------+
| 6 | 2 | 3 |
+----------------+---------+---------+
| 8 | 2 | 4 |
+----------------+---------+---------+
| 12 | 3 | 4 |
+----------------+---------+---------+
| 16 | 4 | 4 |
+----------------+---------+---------+
If you only specify PAPERLESS_TASK_WORKERS, paperless will adjust
PAPERLESS_THREADS_PER_WORKER automatically.
PAPERLESS_WORKER_TIMEOUT=<num>
Machines with few cores or weak ones might not be able to finish OCR on
large documents within the default 1800 seconds. So extending this timeout
may prove to be useful on weak hardware setups.
PAPERLESS_TIME_ZONE=<timezone>
Set the time zone here.
See https://docs.djangoproject.com/en/3.1/ref/settings/#std:setting-TIME_ZONE
for details on how to set it.
Defaults to UTC.
.. _configuration-polling:
PAPERLESS_CONSUMER_POLLING=<num>
If paperless won't find documents added to your consume folder, it might
not be able to automatically detect filesystem changes. In that case,
specify a polling interval in seconds here, which will then cause paperless
to periodically check your consumption directory for changes. This will also
disable listening for file system changes with ``inotify``.
Defaults to 0, which disables polling and uses filesystem notifications.
PAPERLESS_CONSUMER_DELETE_DUPLICATES=<bool>
When the consumer detects a duplicate document, it will not touch the
original document. This default behavior can be changed here.
Defaults to false.
PAPERLESS_CONSUMER_RECURSIVE=<bool>
Enable recursive watching of the consumption directory. Paperless will
then pickup files from files in subdirectories within your consumption
directory as well.
Defaults to false.
PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=<bool>
Set the names of subdirectories as tags for consumed files.
E.g. <CONSUMPTION_DIR>/foo/bar/file.pdf will add the tags "foo" and "bar" to
the consumed file. Paperless will create any tags that don't exist yet.
This is useful for sorting documents with certain tags such as ``car`` or
``todo`` prior to consumption. These folders won't be deleted.
PAPERLESS_CONSUMER_RECURSIVE must be enabled for this to work.
Defaults to false.
PAPERLESS_CONVERT_MEMORY_LIMIT=<num>
On smaller systems, or even in the case of Very Large Documents, the consumer
may explode, complaining about how it's "unable to extend pixel cache". In
such cases, try setting this to a reasonably low value, like 32. The
default is to use whatever is necessary to do everything without writing to
disk, and units are in megabytes.
For more information on how to use this value, you should search
the web for "MAGICK_MEMORY_LIMIT".
Defaults to 0, which disables the limit.
PAPERLESS_CONVERT_TMPDIR=<path>
Similar to the memory limit, if you've got a small system and your OS mounts
/tmp as tmpfs, you should set this to a path that's on a physical disk, like
/home/your_user/tmp or something. ImageMagick will use this as scratch space
when crunching through very large documents.
For more information on how to use this value, you should search
the web for "MAGICK_TMPDIR".
Default is none, which disables the temporary directory.
PAPERLESS_OPTIMIZE_THUMBNAILS=<bool>
Use optipng to optimize thumbnails. This usually reduces the size of
thumbnails by about 20%, but uses considerable compute time during
consumption.
Defaults to true.
PAPERLESS_POST_CONSUME_SCRIPT=<filename>
After a document is consumed, Paperless can trigger an arbitrary script if
you like. This script will be passed a number of arguments for you to work
with. For more information, take a look at :ref:`advanced-post_consume_script`.
The default is blank, which means nothing will be executed.
PAPERLESS_FILENAME_DATE_ORDER=<format>
Paperless will check the document text for document date information.
Use this setting to enable checking the document filename for date
information. The date order can be set to any option as specified in
https://dateparser.readthedocs.io/en/latest/settings.html#date-order.
The filename will be checked first, and if nothing is found, the document
text will be checked as normal.
Defaults to none, which disables this feature.
PAPERLESS_THUMBNAIL_FONT_NAME=<filename>
Paperless creates thumbnails for plain text files by rendering the content
of the file on an image and uses a predefined font for that. This
font can be changed here.
Note that this won't have any effect on already generated thumbnails.
Defaults to ``/usr/share/fonts/liberation/LiberationSerif-Regular.ttf``.
PAPERLESS_IGNORE_DATES=<string>
Paperless parses a documents creation date from filename and file content.
You may specify a comma separated list of dates that should be ignored during
this process. This is useful for special dates (like date of birth) that appear
in documents regularly but are very unlikely to be the documents creation date.
You may specify dates in a multitude of formats supported by dateparser (see
https://dateparser.readthedocs.io/en/latest/#popular-formats) but as the dates
need to be comma separated, the options are limited.
Example: "2020-12-02,22.04.1999"
Defaults to an empty string to not ignore any dates.
PAPERLESS_DATE_ORDER=<format>
Paperless will try to determine the document creation date from its contents.
Specify the date format Paperless should expect to see within your documents.
This option defaults to DMY which translates to day first, month second, and year
last order. Characters D, M, or Y can be shuffled to meet the required order.
PAPERLESS_CONSUMER_IGNORE_PATTERNS=<json>
By default, paperless ignores certain files and folders in the consumption
directory, such as system files created by the Mac OS.
This can be adjusted by configuring a custom json array with patterns to exclude.
Defautls to ``[".DS_STORE/*", "._*", ".stfolder/*"]``.
Binaries
########
There are a few external software packages that Paperless expects to find on
your system when it starts up. Unless you've done something creative with
their installation, you probably won't need to edit any of these. However,
if you've installed these programs somewhere where simply typing the name of
the program doesn't automatically execute it (ie. the program isn't in your
$PATH), then you'll need to specify the literal path for that program.
PAPERLESS_CONVERT_BINARY=<path>
Defaults to "/usr/bin/convert".
PAPERLESS_GS_BINARY=<path>
Defaults to "/usr/bin/gs".
PAPERLESS_OPTIPNG_BINARY=<path>
Defaults to "/usr/bin/optipng".
.. _configuration-docker:
Docker-specific options
#######################
These options don't have any effect in ``paperless.conf``. These options adjust
the behavior of the docker container. Configure these in `docker-compose.env`.
PAPERLESS_WEBSERVER_WORKERS=<num>
The number of worker processes the webserver should spawn. More worker processes
usually result in the front end to load data much quicker. However, each worker process
also loads the entire application into memory separately, so increasing this value
will increase RAM usage.
Consider configuring this to 1 on low power devices with limited amount of RAM.
Defaults to 2.
PAPERLESS_PORT=<port>
The port number the webserver will listen on inside the container. There are
special setups where you may need this to avoid collisions with other
services (like using podman with multiple containers in one pod).
Don't change this when using Docker. To change the port the webserver is
reachable outside of the container, instead refer to the "ports" key in
``docker-compose.yml``.
Defaults to 8000.
USERMAP_UID=<uid>
The ID of the paperless user in the container. Set this to your actual user ID on the
host system, which you can get by executing
.. code:: shell-session
$ id -u
Paperless will change ownership on its folders to this user, so you need to get this right
in order to be able to write to the consumption directory.
Defaults to 1000.
USERMAP_GID=<gid>
The ID of the paperless Group in the container. Set this to your actual group ID on the
host system, which you can get by executing
.. code:: shell-session
$ id -g
Paperless will change ownership on its folders to this group, so you need to get this right
in order to be able to write to the consumption directory.
Defaults to 1000.
PAPERLESS_OCR_LANGUAGES=<list>
Additional OCR languages to install. By default, paperless comes with
English, German, Italian, Spanish and French. If your language is not in this list, install
additional languages with this configuration option:
.. code:: bash
PAPERLESS_OCR_LANGUAGES=tur ces
To actually use these languages, also set the default OCR language of paperless:
.. code:: bash
PAPERLESS_OCR_LANGUAGE=tur
Defaults to none, which does not install any additional languages.
You will be redirected shortly...

View File

@@ -1,145 +0,0 @@
.. _contributing:
Contributing to Paperless
#########################
.. warning::
This section is not updated to paperless-ngx yet.
Maybe you've been using Paperless for a while and want to add a feature or two,
or maybe you've come across a bug that you have some ideas how to solve. The
beauty of Free software is that you can see what's wrong and help to get it
fixed for everyone!
How to Get Your Changes Rolled Into Paperless
=============================================
If you've found a bug, but don't know how to fix it, you can always post an
issue on `GitHub`_ in the hopes that someone will have the time to fix it for
you. If however you're the one with the time, pull requests are always
welcome, you just have to make sure that your code conforms to a few standards:
Pep8
----
It's the standard for all Python development, so it's `very well documented`_.
The short version is:
* Lines should wrap at 79 characters
* Use ``snake_case`` for variables, ``CamelCase`` for classes, and ``ALL_CAPS``
for constants.
* Space out your operators: ``stuff + 7`` instead of ``stuff+7``
* Two empty lines between classes, and functions, but 1 empty line between
class methods.
There's more to it than that, but if you follow those, you'll probably be
alright. When you submit your pull request, there's a pep8 checker that'll
look at your code to see if anything is off. If it finds anything, it'll
complain at you until you fix it.
Additional Style Guides
-----------------------
Where pep8 is ambiguous, I've tried to be a little more specific. These rules
aren't hard-and-fast, but if you can conform to them, I'll appreciate it and
spend less time trying to conform your PR before merging:
Function calls
..............
If you're calling a function and that necessitates more than one line of code,
please format it like this:
.. code:: python
my_function(
argument1,
kwarg1="x",
kwarg2="y"
another_really_long_kwarg="some big value"
a_kwarg_calling_another_long_function=another_function(
another_arg,
another_kwarg="kwarg!"
)
)
This is all in the interest of code uniformity rather than anything else. If
we stick to a style, everything is understandable in the same way.
Quoting Strings
...............
pep8 is a little too open-minded on this for my liking. Python strings should
be quoted with double quotes (``"``) except in cases where the resulting string
would require too much escaping of a double quote, in which case, a single
quoted, or triple-quoted string will do:
.. code:: python
my_string = "This is my string"
problematic_string = 'This is a "string" with "quotes" in it'
In HTML templates, please use double-quotes for tag attributes, and single
quotes for arguments passed to Django template tags:
.. code:: html
<div class="stuff">
<a href="{% url 'some-url-name' pk='w00t' %}">link this</a>
</div>
This is to keep linters happy they look at an HTML file and see an attribute
closing the ``"`` before it should have been.
--
That's all there is in terms of guidelines, so I hope it's not too daunting.
Indentation & Spacing
.....................
When it comes to indentation:
* For Python, the rule is: follow pep8 and use 4 spaces.
* For Javascript, CSS, and HTML, please use 1 tab.
Additionally, Django templates making use of block elements like ``{% if %}``,
``{% for %}``, and ``{% block %}`` etc. should be indented:
Good:
.. code:: html
{% block stuff %}
<h1>This is the stuff</h1>
{% endblock %}
Bad:
.. code:: html
{% block stuff %}
<h1>This is the stuff</h1>
{% endblock %}
The Code of Conduct
===================
Paperless has a `code of conduct`_. It's a lot like the other ones you see out
there, with a few small changes, but basically it boils down to:
> Don't be an ass, or you might get banned.
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/the-paperless-project/paperless/issues
.. _very well documented: https://www.python.org/dev/peps/pep-0008/
.. _code of conduct: https://github.com/the-paperless-project/paperless/blob/master/CODE_OF_CONDUCT.md

View File

@@ -1,363 +1,12 @@
.. _extending:
Paperless development
#####################
*************************
Paperless-ngx Development
*************************
This section describes the steps you need to take to start development on paperless-ngx.
Check out the source from github. The repository is organized in the following way:
.. cssclass:: redirect-notice
* ``master`` always represents the latest release and will only see changes
when a new release is made.
* ``dev`` contains the code that will be in the next release.
* ``feature-X`` contain bigger changes that will be in some release, but not
necessarily the next one.
The Paperless-ngx documentation has permanently moved.
When making functional changes to paperless, *always* make your changes on the ``dev`` branch.
Apart from that, the folder structure is as follows:
* ``docs/`` - Documentation.
* ``src-ui/`` - Code of the front end.
* ``src/`` - Code of the back end.
* ``scripts/`` - Various scripts that help with different parts of development.
* ``docker/`` - Files required to build the docker image.
Initial setup and first start
=============================
After you forked and cloned the code from github you need to perform a first-time setup.
To do the setup you need to perform the steps from the following chapters in a certain order:
1. Install prerequisites + pipenv as mentioned in :ref:`Bare metal route <setup-bare_metal>`
2. Copy ``paperless.conf.example`` to ``paperless.conf`` and enable debug mode.
3. Install the Angular CLI interface:
.. code:: shell-session
$ npm install -g @angular/cli
4. Create ``consume`` and ``media`` folders in the cloned root folder.
.. code:: shell-session
mkdir -p consume media
5. You can now either ...
* install redis or
* use the included scripts/start-services.sh to use docker to fire up a redis instance (and some other services such as tika, gotenberg and a postgresql server) or
* spin up a bare redis container
.. code:: shell-session
docker run -d -p 6379:6379 --restart unless-stopped redis:latest
6. Install the python dependencies by performing in the src/ directory.
.. code:: shell-session
pipenv install --dev
* Make sure you're using python 3.9.x or lower. Otherwise you might get issues with building dependencies. You can use `pyenv <https://github.com/pyenv/pyenv>`_ to install a specific python version.
7. Generate the static UI so you can perform a login to get session that is required for frontend development (this needs to be done one time only). From src-ui directory:
.. code:: shell-session
npm install .
./node_modules/.bin/ng build --configuration production
8. Apply migrations and create a superuser for your dev instance:
.. code:: shell-session
python3 manage.py migrate
python3 manage.py createsuperuser
9. Now spin up the dev backend. Depending on which part of paperless you're developing for, you need to have some or all of them running.
.. code:: shell-session
python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
10. Login with the superuser credentials provided in step 8 at ``http://localhost:8000`` to create a session that enables you to use the backend.
Backend development environment is now ready, to start Frontend development go to ``/src-ui`` and run ``ng serve``. From there you can use ``http://localhost:4200`` for a preview.
Back end development
====================
The backend is a django application. I use PyCharm for development, but you can use whatever
you want.
Configure the IDE to use the src/ folder as the base source folder. Configure the following
launch configurations in your IDE:
* python3 manage.py runserver
* python3 manage.py qcluster
* python3 manage.py document_consumer
To start them all:
.. code:: shell-session
python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
Testing and code style:
* Run ``pytest`` in the src/ directory to execute all tests. This also generates a HTML coverage
report. When runnings test, paperless.conf is loaded as well. However: the tests rely on the default
configuration. This is not ideal. But for now, make sure no settings except for DEBUG are overridden when testing.
* Run ``black`` to format your code.
* Run ``pycodestyle`` to test your code for issues with the configured code style settings.
.. note::
The line length rule E501 is generally useful for getting multiple source files
next to each other on the screen. However, in some cases, its just not possible
to make some lines fit, especially complicated IF cases. Append ``# NOQA: E501``
to disable this check for certain lines.
Front end development
=====================
The front end is build using angular. I use the ``Code - OSS`` IDE for development.
In order to get started, you need ``npm``. Install the Angular CLI interface with
.. code:: shell-session
$ npm install -g @angular/cli
and make sure that it's on your path. Next, in the src-ui/ directory, install the
required dependencies of the project.
.. code:: shell-session
$ npm install
You can launch a development server by running
.. code:: shell-session
$ ng serve
This will automatically update whenever you save. However, in-place compilation might fail
on syntax errors, in which case you need to restart it.
By default, the development server is available on ``http://localhost:4200/`` and is configured
to access the API at ``http://localhost:8000/api/``, which is the default of the backend.
If you enabled DEBUG on the back end, several security overrides for allowed hosts, CORS and
X-Frame-Options are in place so that the front end behaves exactly as in production. This also
relies on you being logged into the back end. Without a valid session, The front end will simply
not work.
In order to build the front end and serve it as part of django, execute
.. code:: shell-session
$ ng build --prod
This will build the front end and put it in a location from which the Django server will serve
it as static content. This way, you can verify that authentication is working.
Localization
============
Paperless is available in many different languages. Since paperless consists both of a django
application and an Angular front end, both these parts have to be translated separately.
Front end localization
----------------------
* The Angular front end does localization according to the `Angular documentation <https://angular.io/guide/i18n>`_.
* The source language of the project is "en_US".
* The source strings end up in the file "src-ui/messages.xlf".
* The translated strings need to be placed in the "src-ui/src/locale/" folder.
* In order to extract added or changed strings from the source files, call ``ng xi18n --ivy``.
Adding new languages requires adding the translated files in the "src-ui/src/locale/" folder and adjusting a couple files.
1. Adjust "src-ui/angular.json":
.. code:: json
"i18n": {
"sourceLocale": "en-US",
"locales": {
"de": "src/locale/messages.de.xlf",
"nl-NL": "src/locale/messages.nl_NL.xlf",
"fr": "src/locale/messages.fr.xlf",
"en-GB": "src/locale/messages.en_GB.xlf",
"pt-BR": "src/locale/messages.pt_BR.xlf",
"language-code": "language-file"
}
}
2. Add the language to the available options in "src-ui/src/app/services/settings.service.ts":
.. code:: typescript
getLanguageOptions(): LanguageOption[] {
return [
{code: "en-us", name: $localize`English (US)`, englishName: "English (US)", dateInputFormat: "mm/dd/yyyy"},
{code: "en-gb", name: $localize`English (GB)`, englishName: "English (GB)", dateInputFormat: "dd/mm/yyyy"},
{code: "de", name: $localize`German`, englishName: "German", dateInputFormat: "dd.mm.yyyy"},
{code: "nl", name: $localize`Dutch`, englishName: "Dutch", dateInputFormat: "dd-mm-yyyy"},
{code: "fr", name: $localize`French`, englishName: "French", dateInputFormat: "dd/mm/yyyy"},
{code: "pt-br", name: $localize`Portuguese (Brazil)`, englishName: "Portuguese (Brazil)", dateInputFormat: "dd/mm/yyyy"}
// Add your new language here
]
}
``dateInputFormat`` is a special string that defines the behavior of the date input fields and absolutely needs to contain "dd", "mm" and "yyyy".
3. Import and register the Angular data for this locale in "src-ui/src/app/app.module.ts":
.. code:: typescript
import localeDe from '@angular/common/locales/de';
registerLocaleData(localeDe)
Back end localization
---------------------
A majority of the strings that appear in the back end appear only when the admin is used. However,
some of these are still shown on the front end (such as error messages).
* The django application does localization according to the `django documentation <https://docs.djangoproject.com/en/3.1/topics/i18n/translation/>`_.
* The source language of the project is "en_US".
* Localization files end up in the folder "src/locale/".
* In order to extract strings from the application, call ``python3 manage.py makemessages -l en_US``. This is important after making changes to translatable strings.
* The message files need to be compiled for them to show up in the application. Call ``python3 manage.py compilemessages`` to do this. The generated files don't get
committed into git, since these are derived artifacts. The build pipeline takes care of executing this command.
Adding new languages requires adding the translated files in the "src/locale/" folder and adjusting the file "src/paperless/settings.py" to include the new language:
.. code:: python
LANGUAGES = [
("en-us", _("English (US)")),
("en-gb", _("English (GB)")),
("de", _("German")),
("nl-nl", _("Dutch")),
("fr", _("French")),
("pt-br", _("Portuguese (Brazil)")),
# Add language here.
]
Building the documentation
==========================
The documentation is built using sphinx. I've configured ReadTheDocs to automatically build
the documentation when changes are pushed. If you want to build the documentation locally,
this is how you do it:
1. Install python dependencies.
.. code:: shell-session
$ cd /path/to/paperless
$ pipenv install --dev
2. Build the documentation
.. code:: shell-session
$ cd /path/to/paperless/docs
$ pipenv run make clean html
This will build the HTML documentation, and put the resulting files in the ``_build/html``
directory.
Building the Docker image
=========================
Building the docker image from source:
.. code:: shell-session
docker build . -t <your-tag>
Extending Paperless
===================
Paperless does not have any fancy plugin systems and will probably never have. However,
some parts of the application have been designed to allow easy integration of additional
features without any modification to the base code.
Making custom parsers
---------------------
Paperless uses parsers to add documents to paperless. A parser is responsible for:
* Retrieve the content from the original
* Create a thumbnail
* Optional: Retrieve a created date from the original
* Optional: Create an archived document from the original
Custom parsers can be added to paperless to support more file types. In order to do that,
you need to write the parser itself and announce its existence to paperless.
The parser itself must extend ``documents.parsers.DocumentParser`` and must implement the
methods ``parse`` and ``get_thumbnail``. You can provide your own implementation to
``get_date`` if you don't want to rely on paperless' default date guessing mechanisms.
.. code:: python
class MyCustomParser(DocumentParser):
def parse(self, document_path, mime_type):
# This method does not return anything. Rather, you should assign
# whatever you got from the document to the following fields:
# The content of the document.
self.text = "content"
# Optional: path to a PDF document that you created from the original.
self.archive_path = os.path.join(self.tempdir, "archived.pdf")
# Optional: "created" date of the document.
self.date = get_created_from_metadata(document_path)
def get_thumbnail(self, document_path, mime_type):
# This should return the path to a thumbnail you created for this
# document.
return os.path.join(self.tempdir, "thumb.png")
If you encounter any issues during parsing, raise a ``documents.parsers.ParseError``.
The ``self.tempdir`` directory is a temporary directory that is guaranteed to be empty
and removed after consumption finished. You can use that directory to store any
intermediate files and also use it to store the thumbnail / archived document.
After that, you need to announce your parser to paperless. You need to connect a
handler to the ``document_consumer_declaration`` signal. Have a look in the file
``src/paperless_tesseract/apps.py`` on how that's done. The handler is a method
that returns information about your parser:
.. code:: python
def myparser_consumer_declaration(sender, **kwargs):
return {
"parser": MyCustomParser,
"weight": 0,
"mime_types": {
"application/pdf": ".pdf",
"image/jpeg": ".jpg",
}
}
* ``parser`` is a reference to a class that extends ``DocumentParser``.
* ``weight`` is used whenever two or more parsers are able to parse a file: The parser with
the higher weight wins. This can be used to override the parsers provided by
paperless.
* ``mime_types`` is a dictionary. The keys are the mime types your parser supports and the value
is the default file extension that paperless should use when storing files and serving them for
download. We could guess that from the file extensions, but some mime types have many extensions
associated with them and the python methods responsible for guessing the extension do not always
return the same value.
You will be redirected shortly...

View File

@@ -1,118 +1,12 @@
.. _faq:
**************************
Frequently asked questions
**************************
**Q:** *What's the general plan for Paperless-ngx?*
**A:** While Paperless-ngx is already considered largely "feature-complete" it is a community-driven
project and development will be guided in this way. New features can be submitted via
GitHub discussions and "up-voted" by the community but this is not a garauntee the feature
will be implemented. This project will always be open to collaboration in the form of PRs,
ideas etc.
.. cssclass:: redirect-notice
**Q:** *I'm using docker. Where are my documents?*
The Paperless-ngx documentation has permanently moved.
**A:** Your documents are stored inside the docker volume ``paperless_media``.
Docker manages this volume automatically for you. It is a persistent storage
and will persist as long as you don't explicitly delete it. The actual location
depends on your host operating system. On Linux, chances are high that this location
is
.. code::
/var/lib/docker/volumes/paperless_media/_data
.. caution::
Do not mess with this folder. Don't change permissions and don't move
files around manually. This folder is meant to be entirely managed by docker
and paperless.
**Q:** *Let's say I want to switch tools in a year. Can I easily move to other systems?*
**A:** Your documents are stored as plain files inside the media folder. You can always drag those files
out of that folder to use them elsewhere. Here are a couple notes about that.
* Paperless-ngx never modifies your original documents. It keeps checksums of all documents and uses a
scheduled sanity checker to check that they remain the same.
* By default, paperless uses the internal ID of each document as its filename. This might not be very
convenient for export. However, you can adjust the way files are stored in paperless by
:ref:`configuring the filename format <advanced-file_name_handling>`.
* :ref:`The exporter <utilities-exporter>` is another easy way to get your files out of paperless with reasonable file names.
**Q:** *What file types does paperless-ngx support?*
**A:** Currently, the following files are supported:
* PDF documents, PNG images, JPEG images, TIFF images and GIF images are processed with OCR and converted into PDF documents.
* Plain text documents are supported as well and are added verbatim
to paperless.
* With the optional Tika integration enabled (see :ref:`Configuration <configuration-tika>`), Paperless also supports various
Office documents (.docx, .doc, odt, .ppt, .pptx, .odp, .xls, .xlsx, .ods).
Paperless-ngx determines the type of a file by inspecting its content. The
file extensions do not matter.
**Q:** *Will paperless-ngx run on Raspberry Pi?*
**A:** The short answer is yes. I've tested it on a Raspberry Pi 3 B.
The long answer is that certain parts of
Paperless will run very slow, such as the OCR. On Raspberry Pi,
try to OCR documents before feeding them into paperless so that paperless can
reuse the text. The web interface is a lot snappier, since it runs
in your browser and paperless has to do much less work to serve the data.
.. note::
You can adjust some of the settings so that paperless uses less processing
power. See :ref:`setup-less_powerful_devices` for details.
**Q:** *How do I install paperless-ngx on Raspberry Pi?*
**A:** Docker images are available for arm and arm64 hardware, so just follow
the docker-compose instructions. Apart from more required disk space compared to
a bare metal installation, docker comes with close to zero overhead, even on
Raspberry Pi.
If you decide to got with the bare metal route, be aware that some of the
python requirements do not have precompiled packages for ARM / ARM64. Installation
of these will require additional development libraries and compilation will take
a long time.
**Q:** *How do I run this on unRaid?*
**A:** Head over to `<https://github.com/selfhosters/unRAID-CA-templates>`_,
`Uli Fahrer <https://github.com/Tooa>`_ created a container template for that.
I don't exactly know how to use that though, since I don't use unRaid.
**Q:** *How do I run this on my toaster?*
**A:** I honestly don't know! As for all other devices that might be able
to run paperless, you're a bit on your own. If you can't run the docker image,
the documentation has instructions for bare metal installs. I'm running
paperless on an i3 processor from 2015 or so. This is also what I use to test
new releases with. Apart from that, I also have a Raspberry Pi, which I
occasionally build the image on and see if it works.
**Q:** *How do I proxy this with NGINX?*
**A:** See :ref:`here <setup-nginx>`.
.. _faq-mod_wsgi:
**Q:** *How do I get WebSocket support with Apache mod_wsgi*?
**A:** ``mod_wsgi`` by itself does not support ASGI. Paperless will continue
to work with WSGI, but certain features such as status notifications about
document consumption won't be available.
If you want to continue using ``mod_wsgi``, you will have to run an ASGI-enabled
web server as well that processes WebSocket connections, and configure Apache to
redirect WebSocket connections to this server. Multiple options for ASGI servers
exist:
* ``gunicorn`` with ``uvicorn`` as the worker implementation (the default of paperless)
* ``daphne`` as a standalone server, which is the reference implementation for ASGI.
* ``uvicorn`` as a standalone server
You will be redirected shortly...

View File

@@ -2,75 +2,24 @@
Paperless
*********
Paperless is a simple Django application running in two parts:
a *Consumer* (the thing that does the indexing) and
the *Web server* (the part that lets you search &
download already-indexed documents). If you want to learn more about its
functions keep on reading after the installation section.
.. cssclass:: redirect-notice
Why This Exists
===============
The Paperless-ngx documentation has permanently moved.
Paper is a nightmare. Environmental issues aside, there's no excuse for it in
the 21st century. It takes up space, collects dust, doesn't support any form
of a search feature, indexing is tedious, it's heavy and prone to damage &
loss.
I wrote this to make "going paperless" easier. I do not have to worry about
finding stuff again. I feed documents right from the post box into the scanner
and then shred them. Perhaps you might find it useful too.
Paperless-ngx
=============
Paperless-ngx is a document management system that transforms your physical
documents into a searchable online archive so you can keep, well, *less paper*.
Paperless-ngx forked from paperless-ng to continue the great work and
distribute responsibility of supporting and advancing the project among a team
of people.
NG stands for both Angular (the framework used for the
Frontend) and next-gen. Publishing this project under a different name also
avoids confusion between paperless and paperless-ngx.
If you want to learn about what's different in paperless-ngx from Paperless, check out these
resources in the documentation:
* :ref:`Some screenshots <screenshots>` of the new UI are available.
* Read :ref:`this section <advanced-automatic_matching>` if you want to
learn about how paperless automates all tagging using machine learning.
* Paperless now comes with a :ref:`proper email consumer <usage-email>`
that's fully tested and production ready.
* Paperless creates searchable PDF/A documents from whatever you you put into
the consumption directory. This means that you can select text in
image-only documents coming from your scanner.
* See :ref:`this note <utilities-encyption>` about GnuPG encryption in
paperless-ngx.
* Paperless is now integrated with a
:ref:`task processing queue <setup-task_processor>` that tells you
at a glance when and why something is not working.
* The :ref:`changelog <paperless_changelog>` contains a detailed list of all changes
in paperless-ngx.
Contents
========
You will be redirected shortly...
.. toctree::
:maxdepth: 1
setup
usage_overview
advanced_usage
administration
configuration
api
faq
troubleshooting
extending
contributing
scanners
screenshots
changelog
screenshots
scanners
administration
advanced_usage
usage_overview
setup
troubleshooting
changelog
configuration
extending
api
faq

View File

@@ -0,0 +1 @@
myst-parser==0.18.1

View File

@@ -1,114 +1,12 @@
.. _scanners:
***********************
Scanner recommendations
***********************
*******************
Scanners & Software
*******************
As Paperless operates by watching a folder for new files, doesn't care what
scanner you use, but sometimes finding a scanner that will write to an FTP,
NFS, or SMB server can be difficult. This page is here to help you find one
that works right for you based on recommendations from other Paperless users.
Physical scanners
=================
.. cssclass:: redirect-notice
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brand | Model | Supports | Recommended By |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| | | FTP | NFS | SMB | SMTP | API [1]_ | |
+=========+================+=====+=====+=====+======+==========+================+
| Brother | `ADS-1700W`_ | yes | | yes | yes | |`holzhannes`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `ADS-1600W`_ | yes | | yes | yes | |`holzhannes`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `ADS-1500W`_ | yes | | yes | yes | |`danielquinn`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `ADS-1100W`_ | yes | | | | |`ytzelf`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `ADS-2800W`_ | yes | yes | | yes | yes |`philpagel`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-J6930DW`_ | yes | | | | |`ayounggun`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-L5850DW`_ | yes | | | yes | |`holzhannes`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-L2750DW`_ | yes | | yes | yes | |`muued`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-J5910DW`_ | yes | | | | |`bmsleight`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-8950DW`_ | yes | | | yes | yes |`philpagel`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Brother | `MFC-9142CDN`_ | yes | | yes | | |`REOLDEV`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Fujitsu | `ix500`_ | yes | | yes | | |`eonist`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Epson | `ES-580W`_ | yes | | yes | yes | |`fignew`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Epson | `WF-7710DWF`_ | yes | | yes | | |`Skylinar`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Fujitsu | `S1300i`_ | yes | | yes | | |`jonaswinkler`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
| Doxie | `Q2`_ | | | | | yes |`Unkn0wnCat`_ |
+---------+----------------+-----+-----+-----+------+----------+----------------+
The Paperless-ngx documentation has permanently moved.
.. _MFC-L5850DW: https://www.brother-usa.com/products/mfcl5850dw
.. _MFC-L2750DW: https://www.brother.de/drucker/laserdrucker/mfc-l2750dw
.. _ADS-1700W: https://www.brother-usa.com/products/ads1700w
.. _ADS-1600W: https://www.brother-usa.com/products/ads1600w
.. _ADS-1500W: https://www.brother.ca/en/p/ads1500w
.. _ADS-1100W: https://support.brother.com/g/b/downloadtop.aspx?c=fr&lang=fr&prod=ads1100w_eu_as_cn
.. _ADS-2800W: https://www.brother-usa.com/products/ads2800w
.. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW
.. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw
.. _MFC-8950DW: https://www.brother-usa.com/products/mfc8950dw
.. _MFC-9142CDN: https://www.brother.co.uk/printers/laser-printers/mfc9140cdn
.. _ES-580W: https://epson.com/Support/Scanners/ES-Series/Epson-WorkForce-ES-580W/s/SPT_B11B258201
.. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf
.. _ix500: http://www.fujitsu.com/us/products/computing/peripheral/scanners/scansnap/ix500/
.. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/
.. _Q2: https://www.getdoxie.com/product/doxie-q/
.. _ayounggun: https://github.com/ayounggun
.. _bmsleight: https://github.com/bmsleight
.. _danielquinn: https://github.com/danielquinn
.. _eonist: https://github.com/eonist
.. _fignew: https://github.com/fignew
.. _holzhannes: https://github.com/holzhannes
.. _jonaswinkler: https://github.com/jonaswinkler
.. _REOLDEV: https://github.com/REOLDEV
.. _Skylinar: https://github.com/Skylinar
.. _ytzelf: https://github.com/ytzelf
.. _Unkn0wnCat: https://github.com/Unkn0wnCat
.. _muued: https://github.com/muued
.. _philpagel: https://github.com/philpagel
.. [1] Scanners with API Integration allow to push scanned documents directly to :ref:`Paperless API <api-file_uploads>`, sometimes referred to as Webhook or Document POST.
Mobile phone software
=====================
You can use your phone to "scan" documents. The regular camera app will work, but may have too low contrast for OCR to work well. Apps specifically for scanning are recommended.
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
| Name | OS | Supports | Recommended By |
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
| | | FTP | NFS | SMB | Email | WebDAV | |
+=============================+================+=====+=====+=====+=======+========+==================+
| `Office Lens`_ | Android | ? | ? | ? | ? | ? | `jonaswinkler`_ |
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ |
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `OpenScan`_ | Android | no | no | no | no | no | `benjaminfrank`_ |
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `OCR Scanner - QuickScan`_ | iOS | no | no | no | no | yes | `holzhannes`_ |
+-----------------------------+----------------+-----+-----+-----+-------+--------+------------------+
On Android, you can use these applications in combination with one of the :ref:`Paperless-ngx compatible apps <usage-mobile_upload>` to "Share" the documents produced by these scanner apps with paperless. On iOS, you can share the scanned documents via iOS-Sharing to other mail, WebDav or FTP apps.
.. _Office Lens: https://play.google.com/store/apps/details?id=com.microsoft.office.officelens
.. _Genius Scan: https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free
.. _OCR Scanner - QuickScan: https://apps.apple.com/us/app/quickscan-scanner-text-ocr/id1513790291
.. _OpenScan: https://github.com/Ethereal-Developers-Inc/OpenScan
.. _hannahswain: https://github.com/hannahswain
.. _benjaminfrank: https://github.com/benjaminfrank
You will be redirected shortly...

View File

@@ -4,42 +4,9 @@
Screenshots
***********
This is what paperless-ngx looks like. You shouldn't use paperless to index
research papers though, its a horrible tool for that job.
The dashboard shows customizable views on your document and allows document uploads:
.. cssclass:: redirect-notice
.. image:: _static/screenshots/dashboard.png
The document list provides three different styles to scroll through your documents:
.. image:: _static/screenshots/documents-table.png
.. image:: _static/screenshots/documents-smallcards.png
.. image:: _static/screenshots/documents-largecards.png
Extensive filtering mechanisms:
.. image:: _static/screenshots/documents-filter.png
Side-by-side editing of documents. Optimized for 1080p.
.. image:: _static/screenshots/editing.png
Tag editing. This looks about the same for correspondents and document types.
.. image:: _static/screenshots/new-tag.png
Searching provides auto complete and highlights the results.
.. image:: _static/screenshots/search-preview.png
.. image:: _static/screenshots/search-results.png
Fancy mail filters!
.. image:: _static/screenshots/mail-rules-edited.png
Mobile support in the future? This kinda works, however some layouts are still
too wide.
.. image:: _static/screenshots/mobile.png
The Paperless-ngx documentation has permanently moved.
You will be redirected shortly...

View File

@@ -1,785 +1,12 @@
.. _setup:
*****
Setup
*****
Overview of Paperless-ngx
#########################
Compared to paperless, paperless-ngx works a little different under the hood and has
more moving parts that work together. While this increases the complexity of
the system, it also brings many benefits.
.. cssclass:: redirect-notice
Paperless consists of the following components:
The Paperless-ngx documentation has permanently moved.
* **The webserver:** This is pretty much the same as in paperless. It serves
the administration pages, the API, and the new frontend. This is the main
tool you'll be using to interact with paperless. You may start the webserver
with
.. code:: shell-session
$ cd /path/to/paperless/src/
$ gunicorn -c ../gunicorn.conf.py paperless.wsgi
or by any other means such as Apache ``mod_wsgi``.
* **The consumer:** This is what watches your consumption folder for documents.
However, the consumer itself does not really consume your documents.
Now it notifies a task processor that a new file is ready for consumption.
I suppose it should be named differently.
This was also used to check your emails, but that's now done elsewhere as well.
Start the consumer with the management command ``document_consumer``:
.. code:: shell-session
$ cd /path/to/paperless/src/
$ python3 manage.py document_consumer
.. _setup-task_processor:
* **The task processor:** Paperless relies on `Django Q <https://django-q.readthedocs.io/en/latest/>`_
for doing most of the heavy lifting. This is a task queue that accepts tasks from
multiple sources and processes these in parallel. It also comes with a scheduler that executes
certain commands periodically.
This task processor is responsible for:
* Consuming documents. When the consumer finds new documents, it notifies the task processor to
start a consumption task.
* The task processor also performs the consumption of any documents you upload through
the web interface.
* Consuming emails. It periodically checks your configured accounts for new emails and
notifies the task processor to consume the attachment of an email.
* Maintaining the search index and the automatic matching algorithm. These are things that paperless
needs to do from time to time in order to operate properly.
This allows paperless to process multiple documents from your consumption folder in parallel! On
a modern multi core system, this makes the consumption process with full OCR blazingly fast.
The task processor comes with a built-in admin interface that you can use to check whenever any of the
tasks fail and inspect the errors (i.e., wrong email credentials, errors during consuming a specific
file, etc).
You may start the task processor by executing:
.. code:: shell-session
$ cd /path/to/paperless/src/
$ python3 manage.py qcluster
* A `redis <https://redis.io/>`_ message broker: This is a really lightweight service that is responsible
for getting the tasks from the webserver and the consumer to the task scheduler. These run in a different
process (maybe even on different machines!), and therefore, this is necessary.
* Optional: A database server. Paperless supports both PostgreSQL and SQLite for storing its data.
Installation
############
You can go multiple routes to setup and run Paperless:
* :ref:`Use the easy install docker script <setup-docker_script>`
* :ref:`Pull the image from Docker Hub <setup-docker_hub>`
* :ref:`Build the Docker image yourself <setup-docker_build>`
* :ref:`Install Paperless directly on your system manually (bare metal) <setup-bare_metal>`
The Docker routes are quick & easy. These are the recommended routes. This configures all the stuff
from the above automatically so that it just works and uses sensible defaults for all configuration options.
Here you find a cheat-sheet for docker beginners: `CLI Basics <https://www.sehn.tech/refs/devops-with-docker/>`_
The bare metal route is complicated to setup but makes it easier
should you want to contribute some code back. You need to configure and
run the above mentioned components yourself.
.. _CLI Basics: https://www.sehn.tech/refs/devops-with-docker/
.. _setup-docker_script:
Install Paperless from Docker Hub using the installation script
===============================================================
Paperless provides an interactive installation script. This script will ask you
for a couple configuration options, download and create the necessary configuration files, pull the docker image, start paperless and create your user account. This script essentially
performs all the steps described in :ref:`setup-docker_hub` automatically.
1. Make sure that docker and docker-compose are installed.
2. Download and run the installation script:
.. code:: shell-session
$ bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/master/install-paperless-ngx.sh)"
.. _setup-docker_hub:
Install Paperless from Docker Hub
=================================
1. Login with your user and create a folder in your home-directory `mkdir -v ~/paperless-ngx` to have a place for your configuration files and consumption directory.
2. Go to the `/docker/compose directory on the project page <https://github.com/paperless-ngx/paperless-ngx/tree/master/docker/compose>`_
and download one of the `docker-compose.*.yml` files, depending on which database backend you
want to use. Rename this file to `docker-compose.yml`.
If you want to enable optional support for Office documents, download a file with `-tika` in the file name.
Download the ``docker-compose.env`` file and the ``.env`` file as well and store them
in the same directory.
.. hint::
For new installations, it is recommended to use PostgreSQL as the database
backend.
3. Install `Docker`_ and `docker-compose`_.
.. caution::
If you want to use the included ``docker-compose.*.yml`` file, you
need to have at least Docker version **17.09.0** and docker-compose
version **1.17.0**.
To check do: `docker-compose -v` or `docker -v`
See the `Docker installation guide`_ on how to install the current
version of Docker for your operating system or Linux distribution of
choice. To get the latest version of docker-compose, follow the
`docker-compose installation guide`_ if your package repository doesn't
include it.
.. _Docker installation guide: https://docs.docker.com/engine/installation/
.. _docker-compose installation guide: https://docs.docker.com/compose/install/
4. Modify ``docker-compose.yml`` to your preferences. You may want to change the path
to the consumption directory. Find the line that specifies where
to mount the consumption directory:
.. code::
- ./consume:/usr/src/paperless/consume
Replace the part BEFORE the colon with a local directory of your choice:
.. code::
- /home/jonaswinkler/paperless-inbox:/usr/src/paperless/consume
Don't change the part after the colon or paperless wont find your documents.
You may also need to change the default port that the webserver will use
from the default (8000):
.. code::
ports:
- 8000:8000
Replace the part BEFORE the colon with a port of your choice:
.. code::
ports:
- 8010:8000
Don't change the part after the colon or edit other lines that refer to
port 8000. Modifying the part before the colon will map requests on another
port to the webserver running on the default port.
5. Modify ``docker-compose.env``, following the comments in the file. The
most important change is to set ``USERMAP_UID`` and ``USERMAP_GID``
to the uid and gid of your user on the host system. Use ``id -u`` and
``id -g`` to get these.
This ensures that
both the docker container and you on the host machine have write access
to the consumption directory. If your UID and GID on the host system is
1000 (the default for the first normal user on most systems), it will
work out of the box without any modifications. `id "username"` to check.
.. note::
You can copy any setting from the file ``paperless.conf.example`` and paste it here.
Have a look at :ref:`configuration` to see what's available.
.. caution::
Some file systems such as NFS network shares don't support file system
notifications with ``inotify``. When storing the consumption directory
on such a file system, paperless will not pick up new files
with the default configuration. You will need to use ``PAPERLESS_CONSUMER_POLLING``,
which will disable inotify. See :ref:`here <configuration-polling>`.
6. Run ``docker-compose pull``, followed by ``docker-compose up -d``.
This will pull the image, create and start the necessary containers.
7. To be able to login, you will need a super user. To create it, execute the
following command:
.. code-block:: shell-session
$ docker-compose run --rm webserver createsuperuser
This will prompt you to set a username, an optional e-mail address and
finally a password (at least 8 characters).
8. The default ``docker-compose.yml`` exports the webserver on your local port
8000. If you did not change this, you should now be able to visit your
Paperless instance at ``http://127.0.0.1:8000`` or your servers IP-Address:8000.
Use the login credentials you have created with the previous step.
.. _Docker: https://www.docker.com/
.. _docker-compose: https://docs.docker.com/compose/install/
.. _setup-docker_build:
Build the Docker image yourself
===============================
1. Clone the entire repository of paperless:
.. code:: shell-session
git clone https://github.com/paperless-ngx/paperless-ngx
The master branch always reflects the latest stable version.
2. Copy one of the ``docker/compose/docker-compose.*.yml`` to ``docker-compose.yml`` in the root folder,
depending on which database backend you want to use. Copy
``docker-compose.env`` into the project root as well.
3. In the ``docker-compose.yml`` file, find the line that instructs docker-compose to pull the paperless image from Docker Hub:
.. code:: yaml
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
and replace it with a line that instructs docker-compose to build the image from the current working directory instead:
.. code:: yaml
webserver:
build: .
4. Follow steps 3 to 8 of :ref:`setup-docker_hub`. When asked to run
``docker-compose pull`` to pull the image, do
.. code:: shell-session
$ docker-compose build
instead to build the image.
.. _setup-bare_metal:
Bare Metal Route
================
Paperless runs on linux only. The following procedure has been tested on a minimal
installation of Debian/Buster, which is the current stable release at the time of
writing. Windows is not and will never be supported.
1. Install dependencies. Paperless requires the following packages.
* ``python3`` 3.8, 3.9
* ``python3-pip``
* ``python3-dev``
* ``fonts-liberation`` for generating thumbnails for plain text files
* ``imagemagick`` >= 6 for PDF conversion
* ``optipng`` for optimizing thumbnails
* ``gnupg`` for handling encrypted documents
* ``libpq-dev`` for PostgreSQL
* ``libmagic-dev`` for mime type detection
* ``mime-support`` for mime type detection
Use this list for your preferred package management:
.. code::
python3 python3-pip python3-dev imagemagick fonts-liberation optipng gnupg libpq-dev libmagic-dev mime-support
These dependencies are required for OCRmyPDF, which is used for text recognition.
* ``unpaper``
* ``ghostscript``
* ``icc-profiles-free``
* ``qpdf``
* ``liblept5``
* ``libxml2``
* ``pngquant``
* ``zlib1g``
* ``tesseract-ocr`` >= 4.0.0 for OCR
* ``tesseract-ocr`` language packs (``tesseract-ocr-eng``, ``tesseract-ocr-deu``, etc)
Use this list for your preferred package management:
.. code::
unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr
On Raspberry Pi, these libraries are required as well:
* ``libatlas-base-dev``
* ``libxslt1-dev``
You will also need ``build-essential``, ``python3-setuptools`` and ``python3-wheel``
for installing some of the python dependencies.
2. Install ``redis`` >= 5.0 and configure it to start automatically.
3. Optional. Install ``postgresql`` and configure a database, user and password for paperless. If you do not wish
to use PostgreSQL, SQLite is available as well.
4. Get the release archive from `<https://github.com/paperless-ngx/paperless-ngx/releases>`_.
If you clone the git repo as it is, you also have to compile the front end by yourself.
Extract the archive to a place from where you wish to execute it, such as ``/opt/paperless``.
5. Configure paperless. See :ref:`configuration` for details. Edit the included ``paperless.conf`` and adjust the
settings to your needs. Required settings for getting paperless running are:
* ``PAPERLESS_REDIS`` should point to your redis server, such as redis://localhost:6379.
* ``PAPERLESS_DBHOST`` should be the hostname on which your PostgreSQL server is running. Do not configure this
to use SQLite instead. Also configure port, database name, user and password as necessary.
* ``PAPERLESS_CONSUMPTION_DIR`` should point to a folder which paperless should watch for documents. You might
want to have this somewhere else. Likewise, ``PAPERLESS_DATA_DIR`` and ``PAPERLESS_MEDIA_ROOT`` define where
paperless stores its data. If you like, you can point both to the same directory.
* ``PAPERLESS_SECRET_KEY`` should be a random sequence of characters. It's used for authentication. Failure
to do so allows third parties to forge authentication credentials.
Many more adjustments can be made to paperless, especially the OCR part. The following options are recommended
for everyone:
* Set ``PAPERLESS_OCR_LANGUAGE`` to the language most of your documents are written in.
* Set ``PAPERLESS_TIME_ZONE`` to your local time zone.
6. Create a system user under which you wish to run paperless.
.. code:: shell-session
adduser paperless --system --home /opt/paperless --group
7. Ensure that these directories exist
and that the paperless user has write permissions to the following directories:
* ``/opt/paperless/media``
* ``/opt/paperless/data``
* ``/opt/paperless/consume``
Adjust as necessary if you configured different folders.
8. Install python requirements from the ``requirements.txt`` file.
It is up to you if you wish to use a virtual environment or not. First you should update your pip, so it gets the actual packages.
.. code:: shell-session
sudo -Hu paperless pip3 install --upgrade pip
.. code:: shell-session
sudo -Hu paperless pip3 install -r requirements.txt
This will install all python dependencies in the home directory of
the new paperless user.
9. Go to ``/opt/paperless/src``, and execute the following commands:
.. code:: bash
# This creates the database schema.
sudo -Hu paperless python3 manage.py migrate
# This creates your first paperless user
sudo -Hu paperless python3 manage.py createsuperuser
10. Optional: Test that paperless is working by executing
.. code:: bash
# This collects static files from paperless and django.
sudo -Hu paperless python3 manage.py runserver
and pointing your browser to http://localhost:8000/.
.. warning::
This is a development server which should not be used in
production. It is not audited for security and performance
is inferior to production ready web servers.
.. hint::
This will not start the consumer. Paperless does this in a
separate process.
11. Setup systemd services to run paperless automatically. You may
use the service definition files included in the ``scripts`` folder
as a starting point.
Paperless needs the ``webserver`` script to run the webserver, the
``consumer`` script to watch the input folder, and the ``scheduler``
script to run tasks such as email checking and document consumption.
The ``socket`` script enables ``gunicorn`` to run on port 80 without
root privileges. For this you need to uncomment the ``Require=paperless-webserver.socket``
in the ``webserver`` script and configure ``gunicorn`` to listen on port 80 (see ``paperless/gunicorn.conf.py``).
You may need to adjust the path to the ``gunicorn`` executable. This
will be installed as part of the python dependencies, and is either located
in the ``bin`` folder of your virtual environment, or in ``~/.local/bin/`` if
no virtual environment is used.
These services rely on redis and optionally the database server, but
don't need to be started in any particular order. The example files
depend on redis being started. If you use a database server, you should
add additional dependencies.
.. caution::
The included scripts run a ``gunicorn`` standalone server,
which is fine for running paperless. It does support SSL,
however, the documentation of GUnicorn states that you should
use a proxy server in front of gunicorn instead.
For instructions on how to use nginx for that,
:ref:`see the instructions below <setup-nginx>`.
12. Optional: Install a samba server and make the consumption folder
available as a network share.
13. Configure ImageMagick to allow processing of PDF documents. Most distributions have
this disabled by default, since PDF documents can contain malware. If
you don't do this, paperless will fall back to ghostscript for certain steps
such as thumbnail generation.
Edit ``/etc/ImageMagick-6/policy.xml`` and adjust
.. code::
<policy domain="coder" rights="none" pattern="PDF" />
to
.. code::
<policy domain="coder" rights="read|write" pattern="PDF" />
14. Optional: Install the `jbig2enc <https://ocrmypdf.readthedocs.io/en/latest/jbig2.html>`_
encoder. This will reduce the size of generated PDF documents. You'll most likely need
to compile this by yourself, because this software has been patented until around 2017 and
binary packages are not available for most distributions.
Migrating to Paperless-ngx
##########################
Migration is possible both from Paperless-ng or directly from the 'original' Paperless.
Migrating from Paperless-ng
===========================
Paperless-ngx is meant to be a drop-in replacement for Paperless-ng and thus upgrading should be
trivial for most users, especially when using docker. However, as with any major change, it is
recommended to take a full backup first. Once you are ready, simply change the docker image to
point to the new source. E.g. if using Docker Compose, edit ``docker-compose.yml`` and change:
.. code::
image: jonaswinkler/paperless-ng:latest
to
.. code::
image: ghcr.io/paperless-ngx/paperless-ngx:latest
and then run ``docker-compose up -d`` which will pull the new image recreate the container.
That's it!
Users who installed with the bare-metal route should also update their Git clone to point to
``https://github.com/paperless-ngx/paperless-ngx``, e.g. using the command
``git remote set-url origin https://github.com/paperless-ngx/paperless-ngx`` and then pull the
lastest version.
Migrating from Paperless
========================
At its core, paperless-ngx is still paperless and fully compatible. However, some
things have changed under the hood, so you need to adapt your setup depending on
how you installed paperless.
This setup describes how to update an existing paperless Docker installation.
The important things to keep in mind are as follows:
* Read the :ref:`changelog <paperless_changelog>` and take note of breaking changes.
* You should decide if you want to stick with SQLite or want to migrate your database
to PostgreSQL. See :ref:`setup-sqlite_to_psql` for details on how to move your data from
SQLite to PostgreSQL. Both work fine with paperless. However, if you already have a
database server running for other services, you might as well use it for paperless as well.
* The task scheduler of paperless, which is used to execute periodic tasks
such as email checking and maintenance, requires a `redis`_ message broker
instance. The docker-compose route takes care of that.
* The layout of the folder structure for your documents and data remains the
same, so you can just plug your old docker volumes into paperless-ngx and
expect it to find everything where it should be.
Migration to paperless-ngx is then performed in a few simple steps:
1. Stop paperless.
.. code:: bash
$ cd /path/to/current/paperless
$ docker-compose down
2. Do a backup for two purposes: If something goes wrong, you still have your
data. Second, if you don't like paperless-ngx, you can switch back to
paperless.
3. Download the latest release of paperless-ngx. You can either go with the
docker-compose files from `here <https://github.com/paperless-ngx/paperless-ngx/tree/master/docker/compose>`__
or clone the repository to build the image yourself (see :ref:`above <setup-docker_build>`).
You can either replace your current paperless folder or put paperless-ngx
in a different location.
.. caution::
Paperless-ngx includes a ``.env`` file. This will set the
project name for docker compose to ``paperless``, which will also define the name
of the volumes by paperless-ngx. However, if you experience that paperless-ngx
is not using your old paperless volumes, verify the names of your volumes with
.. code:: shell-session
$ docker volume ls | grep _data
and adjust the project name in the ``.env`` file so that it matches the name
of the volumes before the ``_data`` part.
4. Download the ``docker-compose.sqlite.yml`` file to ``docker-compose.yml``.
If you want to switch to PostgreSQL, do that after you migrated your existing
SQLite database.
5. Adjust ``docker-compose.yml`` and ``docker-compose.env`` to your needs.
See :ref:`setup-docker_hub` for details on which edits are advised.
6. :ref:`Update paperless. <administration-updating>`
7. In order to find your existing documents with the new search feature, you need
to invoke a one-time operation that will create the search index:
.. code:: shell-session
$ docker-compose run --rm webserver document_index reindex
This will migrate your database and create the search index. After that,
paperless will take care of maintaining the index by itself.
8. Start paperless-ngx.
.. code:: bash
$ docker-compose up -d
This will run paperless in the background and automatically start it on system boot.
9. Paperless installed a permanent redirect to ``admin/`` in your browser. This
redirect is still in place and prevents access to the new UI. Clear your
browsing cache in order to fix this.
10. Optionally, follow the instructions below to migrate your existing data to PostgreSQL.
.. _setup-sqlite_to_psql:
Moving data from SQLite to PostgreSQL
=====================================
Moving your data from SQLite to PostgreSQL is done via executing a series of django
management commands as below.
.. caution::
Make sure that your SQLite database is migrated to the latest version.
Starting paperless will make sure that this is the case. If your try to
load data from an old database schema in SQLite into a newer database
schema in PostgreSQL, you will run into trouble.
.. warning::
On some database fields, PostgreSQL enforces predefined limits on maximum
length, whereas SQLite does not. The fields in question are the title of documents
(128 characters), names of document types, tags and correspondents (128 characters),
and filenames (1024 characters). If you have data in these fields that surpasses these
limits, migration to PostgreSQL is not possible and will fail with an error.
1. Stop paperless, if it is running.
2. Tell paperless to use PostgreSQL:
a) With docker, copy the provided ``docker-compose.postgres.yml`` file to
``docker-compose.yml``. Remember to adjust the consumption directory,
if necessary.
b) Without docker, configure the database in your ``paperless.conf`` file.
See :ref:`configuration` for details.
3. Open a shell and initialize the database:
a) With docker, run the following command to open a shell within the paperless
container:
.. code:: shell-session
$ cd /path/to/paperless
$ docker-compose run --rm webserver /bin/bash
This will launch the container and initialize the PostgreSQL database.
b) Without docker, remember to activate any virtual environment, switch to
the ``src`` directory and create the database schema:
.. code:: shell-session
$ cd /path/to/paperless/src
$ python3 manage.py migrate
This will not copy any data yet.
4. Dump your data from SQLite:
.. code:: shell-session
$ python3 manage.py dumpdata --database=sqlite --exclude=contenttypes --exclude=auth.Permission > data.json
5. Load your data into PostgreSQL:
.. code:: shell-session
$ python3 manage.py loaddata data.json
6. If operating inside Docker, you may exit the shell now.
.. code:: shell-session
$ exit
7. Start paperless.
Moving back to Paperless
========================
Lets say you migrated to Paperless-ngx and used it for a while, but decided that
you don't like it and want to move back (If you do, send me a mail about what
part you didn't like!), you can totally do that with a few simple steps.
Paperless-ngx modified the database schema slightly, however, these changes can
be reverted while keeping your current data, so that your current data will
be compatible with original Paperless.
Execute this:
.. code:: shell-session
$ cd /path/to/paperless
$ docker-compose run --rm webserver migrate documents 0023
Or without docker:
.. code:: shell-session
$ cd /path/to/paperless/src
$ python3 manage.py migrate documents 0023
After that, you need to clear your cookies (Paperless-ngx comes with updated
dependencies that do cookie-processing differently) and probably your cache
as well.
.. _setup-less_powerful_devices:
Considerations for less powerful devices
########################################
Paperless runs on Raspberry Pi. However, some things are rather slow on the Pi and
configuring some options in paperless can help improve performance immensely:
* Stick with SQLite to save some resources.
* Consider setting ``PAPERLESS_OCR_PAGES`` to 1, so that paperless will only OCR
the first page of your documents. In most cases, this page contains enough
information to be able to find it.
* ``PAPERLESS_TASK_WORKERS`` and ``PAPERLESS_THREADS_PER_WORKER`` are configured
to use all cores. The Raspberry Pi models 3 and up have 4 cores, meaning that
paperless will use 2 workers and 2 threads per worker. This may result in
sluggish response times during consumption, so you might want to lower these
settings (example: 2 workers and 1 thread to always have some computing power
left for other tasks).
* Keep ``PAPERLESS_OCR_MODE`` at its default value ``skip`` and consider OCR'ing
your documents before feeding them into paperless. Some scanners are able to
do this! You might want to even specify ``skip_noarchive`` to skip archive
file generation for already ocr'ed documents entirely.
* If you want to perform OCR on the device, consider using ``PAPERLESS_OCR_CLEAN=none``.
This will speed up OCR times and use less memory at the expense of slightly worse
OCR results.
* Set ``PAPERLESS_OPTIMIZE_THUMBNAILS`` to 'false' if you want faster consumption
times. Thumbnails will be about 20% larger.
* If using docker, consider setting ``PAPERLESS_WEBSERVER_WORKERS`` to
1. This will save some memory.
For details, refer to :ref:`configuration`.
.. note::
Updating the :ref:`automatic matching algorithm <advanced-automatic_matching>`
takes quite a bit of time. However, the update mechanism checks if your
data has changed before doing the heavy lifting. If you experience the
algorithm taking too much cpu time, consider changing the schedule in the
admin interface to daily. You can also manually invoke the task
by changing the date and time of the next run to today/now.
The actual matching of the algorithm is fast and works on Raspberry Pi as
well as on any other device.
.. _redis: https://redis.io/
.. _setup-nginx:
Using nginx as a reverse proxy
##############################
If you want to expose paperless to the internet, you should hide it behind a
reverse proxy with SSL enabled.
In addition to the usual configuration for SSL,
the following configuration is required for paperless to operate:
.. code:: nginx
http {
# Adjust as required. This is the maximum size for file uploads.
# The default value 1M might be a little too small.
client_max_body_size 10M;
server {
location / {
# Adjust host and port as required.
proxy_pass http://localhost:8000/;
# These configuration options are required for WebSockets to work.
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
Also read `this <https://channels.readthedocs.io/en/stable/deploying.html#nginx-supervisor-ubuntu>`__, towards the end of the section.
You will be redirected shortly...

View File

@@ -1,223 +1,12 @@
.. _troubleshooting:
***************
Troubleshooting
***************
No files are added by the consumer
##################################
Check for the following issues:
.. cssclass:: redirect-notice
* Ensure that the directory you're putting your documents in is the folder
paperless is watching. With docker, this setting is performed in the
``docker-compose.yml`` file. Without docker, look at the ``CONSUMPTION_DIR``
setting. Don't adjust this setting if you're using docker.
* Ensure that redis is up and running. Paperless does its task processing
asynchronously, and for documents to arrive at the task processor, it needs
redis to run.
* Ensure that the task processor is running. Docker does this automatically.
Manually invoke the task processor by executing
The Paperless-ngx documentation has permanently moved.
.. code:: shell-session
$ python3 manage.py qcluster
* Look at the output of paperless and inspect it for any errors.
* Go to the admin interface, and check if there are failed tasks. If so, the
tasks will contain an error message.
Consumer fails to pickup any new files
######################################
If you notice that the consumer will only pickup files in the consumption
directory at startup, but won't find any other files added later, you will need to
enable filesystem polling with the configuration option
``PAPERLESS_CONSUMER_POLLING``, see :ref:`here <configuration-polling>`.
This will disable listening to filesystem changes with inotify and paperless will
manually check the consumption directory for changes instead.
Paperless always redirects to /admin
####################################
You probably had the old paperless installed at some point. Paperless installed
a permanent redirect to /admin in your browser, and you need to clear your
browsing data / cache to fix that.
Operation not permitted
#######################
You might see errors such as:
.. code:: shell-session
chown: changing ownership of '../export': Operation not permitted
The container tries to set file ownership on the listed directories. This is
required so that the user running paperless inside docker has write permissions
to these folders. This happens when pointing these directories to NFS shares,
for example.
Ensure that ``chown`` is possible on these directories.
Classifier error: No training data available
############################################
This indicates that the Auto matching algorithm found no documents to learn from.
This may have two reasons:
* You don't use the Auto matching algorithm: The error can be safely ignored in this case.
* You are using the Auto matching algorithm: The classifier explicitly excludes documents
with Inbox tags. Verify that there are documents in your archive without inbox tags.
The algorithm will only learn from documents not in your inbox.
UserWarning in sklearn on every single document
###############################################
You may encounter warnings like this:
.. code::
/usr/local/lib/python3.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator CountVectorizer from version 0.23.2 when using version 0.24.0.
This might lead to breaking code or invalid results. Use at your own risk.
This happens when certain dependencies of paperless that are responsible for the auto matching algorithm are
updated. After updating these, your current training data *might* not be compatible anymore. This can be ignored
in most cases. This warning will disappear automatically when paperless updates the training data.
If you want to get rid of the warning or actually experience issues with automatic matching, delete
the file ``classification_model.pickle`` in the data directory and let paperless recreate it.
504 Server Error: Gateway Timeout when adding Office documents
##############################################################
You may experience these errors when using the optional TIKA integration:
.. code::
requests.exceptions.HTTPError: 504 Server Error: Gateway Timeout for url: http://gotenberg:3000/forms/libreoffice/convert
Gotenberg is a server that converts Office documents into PDF documents and has a default timeout of 30 seconds.
When conversion takes longer, Gotenberg raises this error.
You can increase the timeout by configuring an environment variable for Gotenberg (see also `here <https://gotenberg.dev/docs/modules/api#properties>`__).
If using docker-compose, this is achieved by the following configuration change in the ``docker-compose.yml`` file:
.. code:: yaml
gotenberg:
image: gotenberg/gotenberg:7
restart: unless-stopped
environment:
CHROMIUM_DISABLE_ROUTES: 1
API_PROCESS_TIMEOUT: 60
Permission denied errors in the consumption directory
#####################################################
You might encounter errors such as:
.. code:: shell-session
The following error occured while consuming document.pdf: [Errno 13] Permission denied: '/usr/src/paperless/src/../consume/document.pdf'
This happens when paperless does not have permission to delete files inside the consumption directory.
Ensure that ``USERMAP_UID`` and ``USERMAP_GID`` are set to the user id and group id you use on the host operating system, if these are
different from ``1000``. See :ref:`setup-docker_hub`.
Also ensure that you are able to read and write to the consumption directory on the host.
OSError: [Errno 19] No such device when consuming files
#######################################################
If you experience errors such as:
.. code:: shell-session
File "/usr/local/lib/python3.7/site-packages/whoosh/codec/base.py", line 570, in open_compound_file
return CompoundStorage(dbfile, use_mmap=storage.supports_mmap)
File "/usr/local/lib/python3.7/site-packages/whoosh/filedb/compound.py", line 75, in __init__
self._source = mmap.mmap(fileno, 0, access=mmap.ACCESS_READ)
OSError: [Errno 19] No such device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/django_q/cluster.py", line 436, in worker
res = f(*task["args"], **task["kwargs"])
File "/usr/src/paperless/src/documents/tasks.py", line 73, in consume_file
override_tag_ids=override_tag_ids)
File "/usr/src/paperless/src/documents/consumer.py", line 271, in try_consume_file
raise ConsumerError(e)
Paperless uses a search index to provide better and faster full text searching. This search index is stored inside
the ``data`` folder. The search index uses memory-mapped files (mmap). The above error indicates that paperless
was unable to create and open these files.
This happens when you're trying to store the data directory on certain file systems (mostly network shares)
that don't support memory-mapped files.
Web-UI stuck at "Loading..."
############################
This might have multiple reasons.
1. If you built the docker image yourself or deployed using the bare metal route,
make sure that there are files in ``<paperless-root>/static/frontend/<lang-code>/``.
If there are no files, make sure that you executed ``collectstatic`` successfully, either
manually or as part of the docker image build.
If the front end is still missing, make sure that the front end is compiled (files present in
``src/documents/static/frontend``). If it is not, you need to compile the front end yourself
or download the release archive instead of cloning the repository.
2. Check the output of the web server. You might see errors like this:
.. code::
[2021-01-25 10:08:04 +0000] [40] [ERROR] Socket error processing request.
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request(listener, req, client, addr)
File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 190, in handle_request
util.reraise(*sys.exc_info())
File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 625, in reraise
raise value
File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 178, in handle_request
resp.write_file(respiter)
File "/usr/local/lib/python3.7/site-packages/gunicorn/http/wsgi.py", line 396, in write_file
if not self.sendfile(respiter):
File "/usr/local/lib/python3.7/site-packages/gunicorn/http/wsgi.py", line 386, in sendfile
sent += os.sendfile(sockno, fileno, offset + sent, count)
OSError: [Errno 22] Invalid argument
To fix this issue, add
.. code::
SENDFILE=0
to your `docker-compose.env` file.
Error while reading metadata
############################
You might find messages like these in your log files:
.. code::
[WARNING] [paperless.parsing.tesseract] Error while reading metadata
This indicates that paperless failed to read PDF metadata from one of your documents. This happens when you
open the affected documents in paperless for editing. Paperless will continue to work, and will simply not
show the invalid metadata.
You will be redirected shortly...

View File

@@ -1,406 +1,12 @@
.. _usage_overview:
**************
Usage Overview
**************
Paperless is an application that manages your personal documents. With
the help of a document scanner (see :ref:`scanners`), paperless transforms
your wieldy physical document binders into a searchable archive and
provides many utilities for finding and managing your documents.
.. cssclass:: redirect-notice
Terms and definitions
#####################
The Paperless-ngx documentation has permanently moved.
Paperless essentially consists of two different parts for managing your
documents:
* The *consumer* watches a specified folder and adds all documents in that
folder to paperless.
* The *web server* provides a UI that you use to manage and search for your
scanned documents.
Each document has a couple of fields that you can assign to them:
* A *Document* is a piece of paper that sometimes contains valuable
information.
* The *correspondent* of a document is the person, institution or company that
a document either originates from, or is sent to.
* A *tag* is a label that you can assign to documents. Think of labels as more
powerful folders: Multiple documents can be grouped together with a single
tag, however, a single document can also have multiple tags. This is not
possible with folders. The reason folders are not implemented in paperless
is simply that tags are much more versatile than folders.
* A *document type* is used to demarcate the type of a document such as letter,
bank statement, invoice, contract, etc. It is used to identify what a document
is about.
* The *date added* of a document is the date the document was scanned into
paperless. You cannot and should not change this date.
* The *date created* of a document is the date the document was initially issued.
This can be the date you bought a product, the date you signed a contract, or
the date a letter was sent to you.
* The *archive serial number* (short: ASN) of a document is the identifier of
the document in your physical document binders. See
:ref:`usage-recommended_workflow` below.
* The *content* of a document is the text that was OCR'ed from the document.
This text is fed into the search engine and is used for matching tags,
correspondents and document types.
Frontend overview
#################
.. warning::
TBD. Add some fancy screenshots!
Adding documents to paperless
#############################
Once you've got Paperless setup, you need to start feeding documents into it.
When adding documents to paperless, it will perform the following operations on
your documents:
1. OCR the document, if it has no text. Digital documents usually have text,
and this step will be skipped for those documents.
2. Paperless will create an archiveable PDF/A document from your document.
If this document is coming from your scanner, it will have embedded selectable text.
3. Paperless performs automatic matching of tags, correspondents and types on the
document before storing it in the database.
.. hint::
This process can be configured to fit your needs. If you don't want paperless
to create archived versions for digital documents, you can configure that by
configuring ``PAPERLESS_OCR_MODE=skip_noarchive``. Please read the
:ref:`relevant section in the documentation <configuration-ocr>`.
.. note::
No matter which options you choose, Paperless will always store the original
document that it found in the consumption directory or in the mail and
will never overwrite that document. Archived versions are stored alongside the
original versions.
The consumption directory
=========================
The primary method of getting documents into your database is by putting them in
the consumption directory. The consumer runs in an infinite loop, looking for new
additions to this directory. When it finds them, the consumer goes about the process
of parsing them with the OCR, indexing what it finds, and storing it in the media directory.
Getting stuff into this directory is up to you. If you're running Paperless
on your local computer, you might just want to drag and drop files there, but if
you're running this on a server and want your scanner to automatically push
files to this directory, you'll need to setup some sort of service to accept the
files from the scanner. Typically, you're looking at an FTP server like
`Proftpd`_ or a Windows folder share with `Samba`_.
.. _Proftpd: http://www.proftpd.org/
.. _Samba: http://www.samba.org/
.. TODO: hyperref to configuration of the location of this magic folder.
Dashboard upload
================
The dashboard has a file drop field to upload documents to paperless. Simply drag a file
onto this field or select a file with the file dialog. Multiple files are supported.
.. _usage-mobile_upload:
Mobile upload
=============
The mobile app over at `<https://github.com/qcasey/paperless_share>`_ allows Android users
to share any documents with paperless. This can be combined with any of the mobile
scanning apps out there, such as Office Lens.
Furthermore, there is the `Paperless App <https://github.com/bauerj/paperless_app>`_ as well,
which not only has document upload, but also document browsing and download features.
.. _usage-email:
IMAP (Email)
============
You can tell paperless-ngx to consume documents from your email accounts.
This is a very flexible and powerful feature, if you regularly received documents
via mail that you need to archive. The mail consumer can be configured by using the
admin interface in the following manner:
1. Define e-mail accounts.
2. Define mail rules for your account.
These rules perform the following:
1. Connect to the mail server.
2. Fetch all matching mails (as defined by folder, maximum age and the filters)
3. Check if there are any consumable attachments.
4. If so, instruct paperless to consume the attachments and optionally
use the metadata provided in the rule for the new document.
5. If documents were consumed from a mail, the rule action is performed
on that mail.
Paperless will completely ignore mails that do not match your filters. It will also
only perform the action on mails that it has consumed documents from.
The actions all ensure that the same mail is not consumed twice by different means.
These are as follows:
* **Delete:** Immediately deletes mail that paperless has consumed documents from.
Use with caution.
* **Mark as read:** Mark consumed mail as read. Paperless will not consume documents
from already read mails. If you read a mail before paperless sees it, it will be
ignored.
* **Flag:** Sets the 'important' flag on mails with consumed documents. Paperless
will not consume flagged mails.
* **Move to folder:** Moves consumed mails out of the way so that paperless wont
consume them again.
.. caution::
The mail consumer will perform these actions on all mails it has consumed
documents from. Keep in mind that the actual consumption process may fail
for some reason, leaving you with missing documents in paperless.
.. note::
With the correct set of rules, you can completely automate your email documents.
Create rules for every correspondent you receive digital documents from and
paperless will read them automatically. The default action "mark as read" is
pretty tame and will not cause any damage or data loss whatsoever.
You can also setup a special folder in your mail account for paperless and use
your favorite mail client to move to be consumed mails into that folder
automatically or manually and tell paperless to move them to yet another folder
after consumption. It's up to you.
.. note::
Paperless will process the rules in the order defined in the admin page.
You can define catch-all rules and have them executed last to consume
any documents not matched by previous rules. Such a rule may assign an "Unknown
mail document" tag to consumed documents so you can inspect them further.
Paperless is set up to check your mails every 10 minutes. This can be configured on the
'Scheduled tasks' page in the admin.
REST API
========
You can also submit a document using the REST API, see :ref:`api-file_uploads` for details.
.. _basic-searching:
Best practices
##############
Paperless offers a couple tools that help you organize your document collection. However,
it is up to you to use them in a way that helps you organize documents and find specific
documents when you need them. This section offers a couple ideas for managing your collection.
Document types allow you to classify documents according to what they are. You can define
types such as "Receipt", "Invoice", or "Contract". If you used to collect all your receipts
in a single binder, you can recreate that system in paperless by defining a document type,
assigning documents to that type and then filtering by that type to only see all receipts.
Not all documents need document types. Sometimes its hard to determine what the type of a
document is or it is hard to justify creating a document type that you only need once or twice.
This is okay. As long as the types you define help you organize your collection in the way
you want, paperless is doing its job.
Tags can be used in many different ways. Think of tags are more versatile folders or binders.
If you have a binder for documents related to university / your car or health care, you can
create these binders in paperless by creating tags and assigning them to relevant documents.
Just as with documents, you can filter the document list by tags and only see documents of
a certain topic.
With physical documents, you'll often need to decide which folder the document belongs to.
The advantage of tags over folders and binders is that a single document can have multiple
tags. A physical document cannot magically appear in two different folders, but with tags,
this is entirely possible.
.. hint::
This can be used in many different ways. One example: Imagine you're working on a particular
task, such as signing up for university. Usually you'll need to collect a bunch of different
documents that are already sorted into various folders. With the tag system of paperless,
you can create a new group of documents that are relevant to this task without destroying
the already existing organization. When you're done with the task, you could delete the
tag again, which would be equal to sorting documents back into the folder they belong into.
Or keep the tag, up to you.
All of the logic above applies to correspondents as well. Attach them to documents if you
feel that they help you organize your collection.
When you've started organizing your documents, create a couple saved views for document collections
you regularly access. This is equal to having labeled physical binders on your desk, except
that these saved views are dynamic and simply update themselves as you add documents to the system.
Here are a couple examples of tags and types that you could use in your collection.
* An ``inbox`` tag for newly added documents that you haven't manually edited yet.
* A tag ``car`` for everything car related (repairs, registration, insurance, etc)
* A tag ``todo`` for documents that you still need to do something with, such as reply, or
perform some task online.
* A tag ``bank account x`` for all bank statement related to that account.
* A tag ``mail`` for anything that you added to paperless via its mail processing capabilities.
* A tag ``missing_metadata`` when you still need to add some metadata to a document, but can't
or don't want to do this right now.
.. _basic-usage_searching:
Searching
#########
Paperless offers an extensive searching mechanism that is designed to allow you to quickly
find a document you're looking for (for example, that thing that just broke and you bought
a couple months ago, that contract you signed 8 years ago).
When you search paperless for a document, it tries to match this query against your documents.
Paperless will look for matching documents by inspecting their content, title, correspondent,
type and tags. Paperless returns a scored list of results, so that documents matching your query
better will appear further up in the search results.
By default, paperless returns only documents which contain all words typed in the search bar.
However, paperless also offers advanced search syntax if you want to drill down the results
further.
Matching documents with logical expressions:
.. code::
shopname AND (product1 OR product2)
Matching specific tags, correspondents or types:
.. code::
type:invoice tag:unpaid
correspondent:university certificate
Matching dates:
.. code::
created:[2005 to 2009]
added:yesterday
modified:today
Matching inexact words:
.. code::
produ*name
.. note::
Inexact terms are hard for search indexes. These queries might take a while to execute. That's why paperless offers
auto complete and query correction.
All of these constructs can be combined as you see fit.
If you want to learn more about the query language used by paperless, paperless uses Whoosh's default query language.
Head over to `Whoosh query language <https://whoosh.readthedocs.io/en/latest/querylang.html>`_.
For details on what date parsing utilities are available, see
`Date parsing <https://whoosh.readthedocs.io/en/latest/dates.html#parsing-date-queries>`_.
.. _usage-recommended_workflow:
The recommended workflow
########################
Once you have familiarized yourself with paperless and are ready to use it
for all your documents, the recommended workflow for managing your documents
is as follows. This workflow also takes into account that some documents
have to be kept in physical form, but still ensures that you get all the
advantages for these documents as well.
The following diagram shows how easy it is to manage your documents.
.. image:: _static/recommended_workflow.png
Preparations in paperless
=========================
* Create an inbox tag that gets assigned to all new documents.
* Create a TODO tag.
Processing of the physical documents
====================================
Keep a physical inbox. Whenever you receive a document that you need to
archive, put it into your inbox. Regularly, do the following for all documents
in your inbox:
1. For each document, decide if you need to keep the document in physical
form. This applies to certain important documents, such as contracts and
certificates.
2. If you need to keep the document, write a running number on the document
before scanning, starting at one and counting upwards. This is the archive
serial number, or ASN in short.
3. Scan the document.
4. If the document has an ASN assigned, store it in a *single* binder, sorted
by ASN. Don't order this binder in any other way.
5. If the document has no ASN, throw it away. Yay!
Over time, you will notice that your physical binder will fill up. If it is
full, label the binder with the range of ASNs in this binder (i.e., "Documents
1 to 343"), store the binder in your cellar or elsewhere, and start a new
binder.
The idea behind this process is that you will never have to use the physical
binders to find a document. If you need a specific physical document, you
may find this document by:
1. Searching in paperless for the document.
2. Identify the ASN of the document, since it appears on the scan.
3. Grab the relevant document binder and get the document. This is easy since
they are sorted by ASN.
Processing of documents in paperless
====================================
Once you have scanned in a document, proceed in paperless as follows.
1. If the document has an ASN, assign the ASN to the document.
2. Assign a correspondent to the document (i.e., your employer, bank, etc)
This isn't strictly necessary but helps in finding a document when you need
it.
3. Assign a document type (i.e., invoice, bank statement, etc) to the document
This isn't strictly necessary but helps in finding a document when you need
it.
4. Assign a proper title to the document (the name of an item you bought, the
subject of the letter, etc)
5. Check that the date of the document is correct. Paperless tries to read
the date from the content of the document, but this fails sometimes if the
OCR is bad or multiple dates appear on the document.
6. Remove inbox tags from the documents.
.. hint::
You can setup manual matching rules for your correspondents and tags and
paperless will assign them automatically. After consuming a couple documents,
you can even ask paperless to *learn* when to assign tags and correspondents
by itself. For details on this feature, see :ref:`advanced-matching`.
Task management
===============
Some documents require attention and require you to act on the document. You
may take two different approaches to handle these documents based on how
regularly you intend to scan documents and use paperless.
* If you scan and process your documents in paperless regularly, assign a
TODO tag to all scanned documents that you need to process. Create a saved
view on the dashboard that shows all documents with this tag.
* If you do not scan documents regularly and use paperless solely for archiving,
create a physical todo box next to your physical inbox and put documents you
need to process in the TODO box. When you performed the task associated with
the document, move it to the inbox.
You will be redirected shortly...

View File

@@ -1,9 +1,17 @@
import os
bind = f'0.0.0.0:{os.getenv("PAPERLESS_PORT", 8000)}'
workers = int(os.getenv("PAPERLESS_WEBSERVER_WORKERS", 2))
# See https://docs.gunicorn.org/en/stable/settings.html for
# explanations of settings
bind = f'{os.getenv("PAPERLESS_BIND_ADDR", "[::]")}:{os.getenv("PAPERLESS_PORT", 8000)}'
workers = int(os.getenv("PAPERLESS_WEBSERVER_WORKERS", 1))
worker_class = "paperless.workers.ConfigurableWorker"
timeout = 120
preload_app = True
# https://docs.gunicorn.org/en/stable/faq.html#blocking-os-fchmod
worker_tmp_dir = "/dev/shm"
def pre_fork(server, worker):
@@ -24,7 +32,7 @@ def worker_int(worker):
## get traceback info
import threading, sys, traceback
id2name = dict([(th.ident, th.name) for th in threading.enumerate()])
id2name = {th.ident: th.name for th in threading.enumerate()}
code = []
for threadId, stack in sys._current_frames().items():
code.append("\n# Thread: %s(%d)" % (id2name.get(threadId, ""), threadId))

View File

@@ -1,18 +1,18 @@
#!/bin/bash
#!/usr/bin/env bash
ask() {
while true ; do
if [[ -z $3 ]] ; then
read -p "$1 [$2]: " result
read -r -p "$1 [$2]: " result
else
read -p "$1 ($3) [$2]: " result
read -r -p "$1 ($3) [$2]: " result
fi
if [[ -z $result ]]; then
ask_result=$2
return
fi
array=$3
if [[ -z $3 || " ${array[@]} " =~ " ${result} " ]]; then
if [[ -z $3 || " ${array[*]} " =~ ${result} ]]; then
ask_result=$result
return
else
@@ -24,7 +24,7 @@ ask() {
ask_docker_folder() {
while true ; do
read -p "$1 [$2]: " result
read -r -p "$1 [$2]: " result
if [[ -z $result ]]; then
ask_result=$2
@@ -47,25 +47,29 @@ if [[ $(id -u) == "0" ]] ; then
exit 1
fi
if [[ -z $(which wget) ]] ; then
if ! command -v wget &> /dev/null ; then
echo "wget executable not found. Is wget installed?"
exit 1
fi
if [[ -z $(which docker) ]] ; then
if ! command -v docker &> /dev/null ; then
echo "docker executable not found. Is docker installed?"
exit 1
fi
if [[ -z $(which docker-compose) ]] ; then
echo "docker-compose executable not found. Is docker-compose installed?"
exit 1
DOCKER_COMPOSE_CMD="docker-compose"
if ! command -v ${DOCKER_COMPOSE_CMD} ; then
if docker compose version &> /dev/null ; then
DOCKER_COMPOSE_CMD="docker compose"
else
echo "docker-compose executable not found. Is docker-compose installed?"
exit 1
fi
fi
# Check if user has permissions to run Docker by trying to get the status of Docker (docker status).
# If this fails, the user probably does not have permissions for Docker.
docker stats --no-stream 2>/dev/null 1>&2
if [ $? -ne 0 ] ; then
if ! docker stats --no-stream &> /dev/null ; then
echo ""
echo "WARN: It look like the current user does not have Docker permissions."
echo "WARN: Use 'sudo usermod -aG docker $USER' to assign Docker permissions to the user."
@@ -88,6 +92,14 @@ echo ""
echo "1. Application configuration"
echo "============================"
echo ""
echo "The URL paperless will be available at. This is required if the"
echo "installation will be accessible via the web, otherwise can be left blank."
echo ""
ask "URL" ""
URL=$ask_result
echo ""
echo "The port on which the paperless webserver will listen for incoming"
echo "connections."
@@ -106,12 +118,12 @@ ask "Current time zone" "$default_time_zone"
TIME_ZONE=$ask_result
echo ""
echo "Database backend: PostgreSQL and SQLite are available. Use PostgreSQL"
echo "Database backend: PostgreSQL, MariaDB, and SQLite are available. Use PostgreSQL"
echo "if unsure. If you're running on a low-power device such as Raspberry"
echo "Pi, use SQLite to save resources."
echo ""
ask "Database backend" "postgres" "postgres sqlite"
ask "Database backend" "postgres" "postgres sqlite mariadb"
DATABASE_BACKEND=$ask_result
echo ""
@@ -162,7 +174,7 @@ ask "Target folder" "$(pwd)/paperless-ngx"
TARGET_FOLDER=$ask_result
echo ""
echo "The consume folder is where paperles will search for new documents."
echo "The consume folder is where paperless will search for new documents."
echo "Point this to a folder where your scanner is able to put your scanned"
echo "documents."
echo ""
@@ -202,9 +214,9 @@ echo ""
ask_docker_folder "Data folder" ""
DATA_FOLDER=$ask_result
if [[ "$DATABASE_BACKEND" == "postgres" ]] ; then
if [[ "$DATABASE_BACKEND" == "postgres" || "$DATABASE_BACKEND" == "mariadb" ]] ; then
echo ""
echo "The database folder, where postgres stores its data."
echo "The database folder, where your database stores its data."
echo "Leave empty to have this managed by docker."
echo ""
echo "CAUTION: If specified, you must specify an absolute path starting with /"
@@ -212,7 +224,7 @@ if [[ "$DATABASE_BACKEND" == "postgres" ]] ; then
echo ""
ask_docker_folder "Database folder" ""
POSTGRES_FOLDER=$ask_result
DATABASE_FOLDER=$ask_result
fi
echo ""
@@ -228,7 +240,7 @@ ask "Paperless username" "$(whoami)"
USERNAME=$ask_result
while true; do
read -sp "Paperless password: " PASSWORD
read -r -sp "Paperless password: " PASSWORD
echo ""
if [[ -z $PASSWORD ]] ; then
@@ -236,7 +248,7 @@ while true; do
continue
fi
read -sp "Paperless password (again): " PASSWORD_REPEAT
read -r -sp "Paperless password (again): " PASSWORD_REPEAT
echo ""
if [[ ! "$PASSWORD" == "$PASSWORD_REPEAT" ]] ; then
@@ -266,14 +278,16 @@ if [[ -z $DATA_FOLDER ]] ; then
else
echo "Data folder: $DATA_FOLDER"
fi
if [[ "$DATABASE_BACKEND" == "postgres" ]] ; then
if [[ -z $POSTGRES_FOLDER ]] ; then
echo "Database (postgres) folder: Managed by docker"
if [[ "$DATABASE_BACKEND" == "postgres" || "$DATABASE_BACKEND" == "mariadb" ]] ; then
if [[ -z $DATABASE_FOLDER ]] ; then
echo "Database folder: Managed by docker"
else
echo "Database (postgres) folder: $POSTGRES_FOLDER"
echo "Database folder: $DATABASE_FOLDER"
fi
fi
echo ""
echo "URL: $URL"
echo "Port: $PORT"
echo "Database: $DATABASE_BACKEND"
echo "Tika enabled: $TIKA_ENABLED"
@@ -285,7 +299,7 @@ echo "Paperless username: $USERNAME"
echo "Paperless email: $EMAIL"
echo ""
read -p "Press any key to install."
read -r -p "Press any key to install."
echo ""
echo "Installing paperless..."
@@ -301,14 +315,20 @@ if [[ $TIKA_ENABLED == "yes" ]] ; then
DOCKER_COMPOSE_VERSION="$DOCKER_COMPOSE_VERSION-tika"
fi
wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/master/docker/compose/docker-compose.$DOCKER_COMPOSE_VERSION.yml" -O docker-compose.yml
wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/master/docker/compose/.env" -O .env
wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/docker-compose.$DOCKER_COMPOSE_VERSION.yml" -O docker-compose.yml
wget "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/docker/compose/.env" -O .env
SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)
SECRET_KEY=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 64 | head -n 1)
DEFAULT_LANGUAGES="deu eng fra ita spa"
DEFAULT_LANGUAGES=("deu eng fra ita spa")
_split_langs="${OCR_LANGUAGE//+/ }"
read -r -a OCR_LANGUAGES_ARRAY <<< "${_split_langs}"
{
if [[ ! $URL == "" ]] ; then
echo "PAPERLESS_URL=$URL"
fi
if [[ ! $USERMAP_UID == "1000" ]] ; then
echo "USERMAP_UID=$USERMAP_UID"
fi
@@ -318,8 +338,8 @@ DEFAULT_LANGUAGES="deu eng fra ita spa"
echo "PAPERLESS_TIME_ZONE=$TIME_ZONE"
echo "PAPERLESS_OCR_LANGUAGE=$OCR_LANGUAGE"
echo "PAPERLESS_SECRET_KEY=$SECRET_KEY"
if [[ ! " ${DEFAULT_LANGUAGES[@]} " =~ " ${OCR_LANGUAGE} " ]] ; then
echo "PAPERLESS_OCR_LANGUAGES=$OCR_LANGUAGE"
if [[ ! ${DEFAULT_LANGUAGES[*]} =~ ${OCR_LANGUAGES_ARRAY[*]} ]] ; then
echo "PAPERLESS_OCR_LANGUAGES=${OCR_LANGUAGES_ARRAY[*]}"
fi
} > docker-compose.env
@@ -329,18 +349,38 @@ sed -i "s#- \./consume:/usr/src/paperless/consume#- $CONSUME_FOLDER:/usr/src/pap
if [[ -n $MEDIA_FOLDER ]] ; then
sed -i "s#- media:/usr/src/paperless/media#- $MEDIA_FOLDER:/usr/src/paperless/media#g" docker-compose.yml
sed -i "/^\s*media:/d" docker-compose.yml
fi
if [[ -n $DATA_FOLDER ]] ; then
sed -i "s#- data:/usr/src/paperless/data#- $DATA_FOLDER:/usr/src/paperless/data#g" docker-compose.yml
sed -i "/^\s*data:/d" docker-compose.yml
fi
if [[ -n $POSTGRES_FOLDER ]] ; then
sed -i "s#- pgdata:/var/lib/postgresql/data#- $POSTGRES_FOLDER:/var/lib/postgresql/data#g" docker-compose.yml
# If the database folder was provided (not blank), replace the pgdata/dbdata volume with a bind mount
# of the provided folder
if [[ -n $DATABASE_FOLDER ]] ; then
if [[ "$DATABASE_BACKEND" == "postgres" ]] ; then
sed -i "s#- pgdata:/var/lib/postgresql/data#- $DATABASE_FOLDER:/var/lib/postgresql/data#g" docker-compose.yml
sed -i "/^\s*pgdata:/d" docker-compose.yml
elif [[ "$DATABASE_BACKEND" == "mariadb" ]]; then
sed -i "s#- dbdata:/var/lib/mysql#- $DATABASE_FOLDER:/var/lib/mysql#g" docker-compose.yml
sed -i "/^\s*dbdata:/d" docker-compose.yml
fi
fi
docker-compose pull
# remove trailing blank lines from end of file
sed -i -e :a -e '/^\n*$/{$d;N;};/\n$/ba' docker-compose.yml
# if last line in file contains "volumes:", remove that line since no more named volumes are left
l1=$(grep -n '^volumes:' docker-compose.yml | cut -d : -f 1) # get line number containing volume: at begin of line
l2=$(wc -l < docker-compose.yml) # get total number of lines
if [ "$l1" -eq "$l2" ] ; then
sed -i "/^volumes:/d" docker-compose.yml
fi
docker-compose run --rm -e DJANGO_SUPERUSER_PASSWORD="$PASSWORD" webserver createsuperuser --noinput --username "$USERNAME" --email "$EMAIL"
docker-compose up -d
${DOCKER_COMPOSE_CMD} pull
${DOCKER_COMPOSE_CMD} run --rm -e DJANGO_SUPERUSER_PASSWORD="$PASSWORD" webserver createsuperuser --noinput --username "$USERNAME" --email "$EMAIL"
${DOCKER_COMPOSE_CMD} up --detach

View File

@@ -23,12 +23,15 @@
#PAPERLESS_MEDIA_ROOT=../media
#PAPERLESS_STATICDIR=../static
#PAPERLESS_FILENAME_FORMAT=
#PAPERLESS_FILENAME_FORMAT_REMOVE_NONE=
# Security and hosting
#PAPERLESS_SECRET_KEY=change-me
#PAPERLESS_ALLOWED_HOSTS=example.com,www.example.com
#PAPERLESS_CORS_ALLOWED_HOSTS=http://example.com,http://localhost:8000
#PAPERLESS_URL=https://example.com
#PAPERLESS_CSRF_TRUSTED_ORIGINS=https://example.com # can be set using PAPERLESS_URL
#PAPERLESS_ALLOWED_HOSTS=example.com,www.example.com # can be set using PAPERLESS_URL
#PAPERLESS_CORS_ALLOWED_HOSTS=https://localhost:8080,https://example.com # can be set using PAPERLESS_URL
#PAPERLESS_FORCE_SCRIPT_NAME=
#PAPERLESS_STATIC_URL=/static/
#PAPERLESS_AUTO_LOGIN_USERNAME=
@@ -58,15 +61,18 @@
#PAPERLESS_CONSUMER_POLLING=10
#PAPERLESS_CONSUMER_DELETE_DUPLICATES=false
#PAPERLESS_CONSUMER_RECURSIVE=false
#PAPERLESS_CONSUMER_IGNORE_PATTERNS=[".DS_STORE/*", "._*", ".stfolder/*"]
#PAPERLESS_CONSUMER_IGNORE_PATTERNS=[".DS_STORE/*", "._*", ".stfolder/*", ".stversions/*", ".localized/*", "desktop.ini"]
#PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false
#PAPERLESS_OPTIMIZE_THUMBNAILS=true
#PAPERLESS_CONSUMER_ENABLE_BARCODES=false
#PAPERLESS_CONSUMER_BARCODE_STRING=PATCHT
#PAPERLESS_PRE_CONSUME_SCRIPT=/path/to/an/arbitrary/script.sh
#PAPERLESS_POST_CONSUME_SCRIPT=/path/to/an/arbitrary/script.sh
#PAPERLESS_FILENAME_DATE_ORDER=YMD
#PAPERLESS_FILENAME_PARSE_TRANSFORMS=[]
#PAPERLESS_NUMBER_OF_SUGGESTED_DATES=5
#PAPERLESS_THUMBNAIL_FONT_NAME=
#PAPERLESS_IGNORE_DATES=
#PAPERLESS_ENABLE_UPDATE_CHECK=
# Tika settings
@@ -78,4 +84,3 @@
#PAPERLESS_CONVERT_BINARY=/usr/bin/convert
#PAPERLESS_GS_BINARY=/usr/bin/gs
#PAPERLESS_OPTIPNG_BINARY=/usr/bin/optipng

View File

@@ -1,109 +0,0 @@
#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
# pipenv lock --requirements
#
-i https://pypi.python.org/simple
--extra-index-url https://www.piwheels.org/simple
aioredis==1.3.1
arrow==1.2.2; python_version >= '3.6'
asgiref==3.5.0; python_version >= '3.7'
async-timeout==4.0.2; python_version >= '3.6'
attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
autobahn==22.2.2; python_version >= '3.7'
automat==20.2.0
backports.zoneinfo==0.2.1
blessed==1.19.1; python_version >= '2.7'
certifi==2021.10.8
cffi==1.15.0
channels-redis==3.3.1
channels==3.0.4
chardet==4.0.0; python_version >= '3.1'
charset-normalizer==2.0.12; python_version >= '3'
click==8.0.4; python_version >= '3.6'
coloredlogs==15.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
concurrent-log-handler==0.9.20
constantly==15.1.0
cryptography==36.0.1
daphne==3.0.2; python_version >= '3.6'
dateparser==1.1.0
django-cors-headers==3.11.0
django-extensions==3.1.5
django-filter==21.1
django-picklefield==3.0.1; python_version >= '3'
django-q==1.3.9
django==3.2.12
djangorestframework==3.13.1
filelock==3.6.0
fuzzywuzzy[speedup]==0.18.0
gunicorn==20.1.0
h11==0.13.0; python_version >= '3.6'
hiredis==2.0.0; python_version >= '3.6'
httptools==0.3.0
humanfriendly==10.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
hyperlink==21.0.0
idna==3.3; python_version >= '3.5'
imap-tools==0.51.1
img2pdf==0.4.3
importlib-resources==5.4.0; python_version < '3.9'
incremental==21.3.0
inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
inotifyrecursive==0.3.5
joblib==1.1.0; python_version >= '3.6'
langdetect==1.0.9
lxml==4.8.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
msgpack==1.0.3
numpy==1.22.2
ocrmypdf==13.4.0
packaging==21.3; python_version >= '3.6'
pathvalidate==2.5.0
pdfminer.six==20211012
pikepdf==5.0.1
pillow==9.0.1
pluggy==1.0.0; python_version >= '3.6'
portalocker==2.4.0; python_version >= '3'
psycopg2-binary==2.9.3
pyasn1-modules==0.2.8
pyasn1==0.4.8
pycparser==2.21; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
pyopenssl==22.0.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
pyparsing==3.0.7; python_version >= '3.6'
python-dateutil==2.8.2
python-dotenv==0.19.2
python-gnupg==0.4.8
python-levenshtein==0.12.2
python-magic==0.4.25
pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
pytz==2021.3
pyyaml==6.0
redis==3.5.3
regex==2022.1.18
reportlab==3.6.7; python_version >= '3.6' and python_version < '4'
requests==2.27.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
scikit-learn==0.24.0
scipy==1.8.0; python_version < '3.11' and python_version >= '3.8'
service-identity==21.1.0
setuptools==60.9.3; python_version >= '3.7'
six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
sqlparse==0.4.2; python_version >= '3.5'
threadpoolctl==3.1.0; python_version >= '3.6'
tika==1.24
tqdm==4.62.3
twisted[tls]==22.1.0; python_full_version >= '3.6.7'
txaio==22.2.1; python_version >= '3.6'
typing-extensions==4.1.1; python_version >= '3.6'
tzdata==2021.5; python_version >= '3.6'
tzlocal==4.1; python_version >= '3.6'
urllib3==1.26.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'
uvicorn[standard]==0.17.5
uvloop==0.16.0
watchdog==2.1.6
watchgod==0.7
wcwidth==0.2.5
websockets==10.2
whitenoise==6.0.0
whoosh==2.7.4
zipp==3.7.0; python_version < '3.10'
zope.interface==5.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'

View File

@@ -1,12 +1,12 @@
[Unit]
Description=Paperless scheduler
Description=Paperless Celery Beat
Requires=redis.service
[Service]
User=paperless
Group=paperless
WorkingDirectory=/opt/paperless/src
ExecStart=python3 manage.py qcluster
ExecStart=celery --app paperless beat --loglevel INFO
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,12 @@
[Unit]
Description=Paperless Celery Workers
Requires=redis.service
[Service]
User=paperless
Group=paperless
WorkingDirectory=/opt/paperless/src
ExecStart=celery --app paperless worker --loglevel INFO
[Install]
WantedBy=multi-user.target

View File

@@ -1,21 +1,16 @@
#!/usr/bin/env bash
DOCUMENT_ID=${1}
DOCUMENT_FILE_NAME=${2}
DOCUMENT_SOURCE_PATH=${3}
DOCUMENT_THUMBNAIL_PATH=${4}
DOCUMENT_DOWNLOAD_URL=${5}
DOCUMENT_THUMBNAIL_URL=${6}
DOCUMENT_CORRESPONDENT=${7}
DOCUMENT_TAGS=${8}
echo "
A document with an id of ${DOCUMENT_ID} was just consumed. I know the
following additional information about it:
* Generated File Name: ${DOCUMENT_FILE_NAME}
* Archive Path: ${DOCUMENT_ARCHIVE_PATH}
* Source Path: ${DOCUMENT_SOURCE_PATH}
* Created: ${DOCUMENT_CREATED}
* Added: ${DOCUMENT_ADDED}
* Modified: ${DOCUMENT_MODIFIED}
* Thumbnail Path: ${DOCUMENT_THUMBNAIL_PATH}
* Download URL: ${DOCUMENT_DOWNLOAD_URL}
* Thumbnail URL: ${DOCUMENT_THUMBNAIL_URL}

View File

@@ -1,4 +1,6 @@
#!/usr/bin/env bash
docker run -p 5432:5432 -e POSTGRES_PASSWORD=password -v paperless_pgdata:/var/lib/postgresql/data -d postgres:13
docker run -d -p 6379:6379 redis:latest
docker run -p 3000:3000 -d gotenberg/gotenberg:7
docker run -p 9998:9998 -d apache/tika
docker run -p 3000:3000 -d gotenberg/gotenberg:7.6
docker run -p 9998:9998 -d ghcr.io/paperless-ngx/tika:latest

4
src-ui/.gitignore vendored
View File

@@ -45,3 +45,7 @@ testem.log
# System Files
.DS_Store
Thumbs.db
# Cypress
cypress/videos/**/*
cypress/screenshots/**/*

Some files were not shown because too many files have changed in this diff Show More