Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3050ed3cb2 | ||
|
|
7bc8325df9 | ||
|
|
2aca64bfcd | ||
|
|
d656de8883 | ||
|
|
32f0ebaac3 | ||
|
|
4e9c4ebd02 | ||
|
|
12abb592be | ||
|
|
4f0951402a | ||
|
|
bf2cdae3b1 | ||
|
|
cd43bc1f66 | ||
|
|
1b24136590 | ||
|
|
e8d5b549de | ||
|
|
3866a77d68 | ||
|
|
360fe68f92 | ||
|
|
c9229f9c80 | ||
|
|
e5b92d895d | ||
|
|
a7643c1c29 | ||
|
|
45fd4e8565 | ||
|
|
211a9d720a | ||
|
|
da9c2735b4 | ||
|
|
d31baca442 | ||
|
|
499d6f79aa | ||
|
|
49e049f1c5 | ||
|
|
7411d7c1e2 | ||
|
|
3f5d3d15fd | ||
|
|
68fb85ceca | ||
|
|
3ebe6d5aef | ||
|
|
566b3ed53d | ||
|
|
a688c747d7 | ||
|
|
83b90e1416 | ||
|
|
23c6f849d6 | ||
|
|
ba6843df83 | ||
|
|
0b90e69119 | ||
|
|
dbe820323e | ||
|
|
47d95d5b0a | ||
|
|
971192f6f3 | ||
|
|
fbfc7df593 | ||
|
|
3c7644ce79 | ||
|
|
4e4a8bcca8 | ||
|
|
dc5586b16d | ||
|
|
1d87b48471 | ||
|
|
353a3432df | ||
|
|
efe94bbf18 | ||
|
|
cea6ec09bc | ||
|
|
4a3276f69c | ||
|
|
f164def2ed | ||
|
|
511c76ae7a | ||
|
|
bfa6dda0de | ||
|
|
54af734971 | ||
|
|
5b9763ecb4 | ||
|
|
438bad23e8 | ||
|
|
ae5a205ba3 | ||
|
|
19b683e7b0 | ||
|
|
0c92027414 | ||
|
|
c4e3b2ca2f | ||
|
|
ba67b89db7 | ||
|
|
06f308ede3 | ||
|
|
214fb8204b | ||
|
|
2a2d7be9f9 | ||
|
|
23304c3746 | ||
|
|
20829c90b2 | ||
|
|
33cc3ce7e0 | ||
|
|
3487b23e88 | ||
|
|
4718fe13c2 | ||
|
|
8592acf6b8 | ||
|
|
88042d7072 | ||
|
|
bf92e52d5c | ||
|
|
419580b3be | ||
|
|
5ee1f6b82b | ||
|
|
410bb6a84e | ||
|
|
af2b5fef13 | ||
|
|
372ac3a40c | ||
|
|
a1507d6079 | ||
|
|
9242a8901a | ||
|
|
1d4f25f930 | ||
|
|
7323ec8d16 | ||
|
|
39d45367d0 | ||
|
|
a6521952b0 | ||
|
|
7148c10f1b | ||
|
|
4a1a66248d | ||
|
|
67d0773231 | ||
|
|
ff370172b5 | ||
|
|
1f707e86cc | ||
|
|
a3dae02cfb | ||
|
|
3eae8a2210 | ||
|
|
0f18fe1853 | ||
|
|
513c61eb79 | ||
|
|
4031233fd4 | ||
|
|
76ff6100a3 | ||
|
|
05c36f91cf | ||
|
|
6625f8962a | ||
|
|
63402b70d2 | ||
|
|
2ae4a7806d | ||
|
|
fcc4ecd007 | ||
|
|
45497250cd | ||
|
|
7dd957140e | ||
|
|
4cd772a39e | ||
|
|
b3906e7bc1 | ||
|
|
e5009b4cd2 | ||
|
|
10bf9fd1f8 | ||
|
|
bd8e68692e | ||
|
|
b8386a1531 | ||
|
|
61534fb29d | ||
|
|
9ad81be38c | ||
|
|
cf7048e336 | ||
|
|
a6105b3ad3 | ||
|
|
a262a82cad | ||
|
|
635c96accf | ||
|
|
5c174a69c2 | ||
|
|
de08d17835 | ||
|
|
ca1e838c52 | ||
|
|
3b73146ecd | ||
|
|
8e3822f8e6 | ||
|
|
3b912a0de1 | ||
|
|
c72791bd21 | ||
|
|
80ba5b561f | ||
|
|
f9f4d4c937 | ||
|
|
0419c52d35 | ||
|
|
93a79be1e2 | ||
|
|
f8afbae2cd | ||
|
|
4a52d346f9 | ||
|
|
7d59d11725 | ||
|
|
5886348188 | ||
|
|
a8135528b1 | ||
|
|
df6b991161 | ||
|
|
3f33f66387 | ||
|
|
870808f3c2 | ||
|
|
b12fcca20d | ||
|
|
61b47e358f | ||
|
|
40a2fb7936 |
No files matched your search
+37
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Verify that all text files end in a trailing newline.
|
||||||
|
|
||||||
|
# Exit on first failing command.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Exit on unset variable.
|
||||||
|
set -u
|
||||||
|
|
||||||
|
success=0
|
||||||
|
|
||||||
|
function is_plaintext_file() {
|
||||||
|
local file="$1"
|
||||||
|
if [[ $file == *.svg ]]; then
|
||||||
|
echo ""
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
file --brief "${file}" | grep text
|
||||||
|
}
|
||||||
|
|
||||||
|
# Split strings on newlines.
|
||||||
|
IFS='
|
||||||
|
'
|
||||||
|
for file in $(git ls-files)
|
||||||
|
do
|
||||||
|
if [[ -z $(is_plaintext_file "${file}") ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ -z "$(tail -c 1 "${file}")" ]]; then
|
||||||
|
printf "File must end in a trailing newline: %s\n" "${file}" >&2
|
||||||
|
success=255
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit "${success}"
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check for trailing whitespace at end of lines.
|
||||||
|
|
||||||
|
# Exit on first failing command.
|
||||||
|
set -e
|
||||||
|
# Exit on unset variable.
|
||||||
|
set -u
|
||||||
|
|
||||||
|
FOUND_TRAILING_WHITESPACE=0
|
||||||
|
|
||||||
|
while read -r line; do
|
||||||
|
if grep \
|
||||||
|
"\s$" \
|
||||||
|
--line-number \
|
||||||
|
--with-filename \
|
||||||
|
--binary-files=without-match \
|
||||||
|
--exclude="*.svg" \
|
||||||
|
--exclude="*.eps" \
|
||||||
|
"${line}"; then
|
||||||
|
echo "ERROR: Found trailing whitespace" >&2;
|
||||||
|
FOUND_TRAILING_WHITESPACE=1
|
||||||
|
fi
|
||||||
|
done < <(git ls-files)
|
||||||
|
|
||||||
|
exit "${FOUND_TRAILING_WHITESPACE}"
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
name: Set up Python
|
name: Set up Python
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: 3.7
|
python-version: 3.9
|
||||||
-
|
-
|
||||||
name: Get pip cache dir
|
name: Get pip cache dir
|
||||||
id: pip-cache
|
id: pip-cache
|
||||||
@@ -59,7 +59,7 @@ jobs:
|
|||||||
name: Set up Python
|
name: Set up Python
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: 3.7
|
python-version: 3.9
|
||||||
-
|
-
|
||||||
name: Get pip cache dir
|
name: Get pip cache dir
|
||||||
id: pip-cache
|
id: pip-cache
|
||||||
@@ -81,12 +81,26 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd src/
|
cd src/
|
||||||
pycodestyle
|
pycodestyle
|
||||||
|
whitespace:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
-
|
||||||
|
name: Ensure there are no trailing spaces
|
||||||
|
run: |
|
||||||
|
.github/workflow-scripts/check-trailing-whitespace
|
||||||
|
-
|
||||||
|
name: Ensure all text files end with a trailing newline
|
||||||
|
run: |
|
||||||
|
.github/workflow-scripts/check-trailing-whitespace
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ['3.6', '3.7', '3.8', '3.9']
|
python-version: ['3.7', '3.8', '3.9']
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@@ -122,7 +136,7 @@ jobs:
|
|||||||
pytest
|
pytest
|
||||||
-
|
-
|
||||||
name: Publish coverage results
|
name: Publish coverage results
|
||||||
if: matrix.python-version == '3.8'
|
if: matrix.python-version == '3.9'
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
# https://github.com/coveralls-clients/coveralls-python/issues/251
|
# https://github.com/coveralls-clients/coveralls-python/issues/251
|
||||||
@@ -158,7 +172,7 @@ jobs:
|
|||||||
path: src/documents/static/frontend/
|
path: src/documents/static/frontend/
|
||||||
|
|
||||||
build-release:
|
build-release:
|
||||||
needs: [frontend, documentation, tests, codestyle]
|
needs: [frontend, documentation, tests, whitespace, codestyle]
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@@ -168,7 +182,7 @@ jobs:
|
|||||||
name: Set up Python
|
name: Set up Python
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: 3.7
|
python-version: 3.9
|
||||||
-
|
-
|
||||||
name: Install dependencies
|
name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -268,7 +282,7 @@ jobs:
|
|||||||
build-docker-image:
|
build-docker-image:
|
||||||
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/ng-'))
|
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/ng-'))
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [frontend, tests, codestyle]
|
needs: [frontend, tests, whitespace, codestyle]
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Prepare
|
name: Prepare
|
||||||
|
|||||||
+3
-8
@@ -8,7 +8,7 @@ RUN git clone https://github.com/agl/jbig2enc .
|
|||||||
RUN ./autogen.sh
|
RUN ./autogen.sh
|
||||||
RUN ./configure && make
|
RUN ./configure && make
|
||||||
|
|
||||||
FROM python:3.7-slim
|
FROM python:3.9-slim-bullseye
|
||||||
|
|
||||||
# Binary dependencies
|
# Binary dependencies
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
@@ -33,16 +33,11 @@ RUN apt-get update \
|
|||||||
zlib1g \
|
zlib1g \
|
||||||
ghostscript \
|
ghostscript \
|
||||||
icc-profiles-free \
|
icc-profiles-free \
|
||||||
&& echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \
|
# Mime type detection
|
||||||
&& apt-get update \
|
|
||||||
&& apt-get -y --no-install-recommends install \
|
|
||||||
# fixes sudo / gosu issues
|
|
||||||
libseccomp2 \
|
|
||||||
# Mime type detection
|
|
||||||
file \
|
file \
|
||||||
libmagic-dev \
|
libmagic-dev \
|
||||||
media-types \
|
media-types \
|
||||||
# OCRmyPDF dependencies
|
# OCRmyPDF dependencies
|
||||||
liblept5 \
|
liblept5 \
|
||||||
qpdf \
|
qpdf \
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
|
|||||||
@@ -14,15 +14,14 @@ django = "~=3.2"
|
|||||||
django-cors-headers = "*"
|
django-cors-headers = "*"
|
||||||
django-extensions = "*"
|
django-extensions = "*"
|
||||||
django-filter = "~=2.4.0"
|
django-filter = "~=2.4.0"
|
||||||
django-q = "==1.3.4"
|
django-q = "~=1.3.4"
|
||||||
djangorestframework = "~=3.12.2"
|
djangorestframework = "~=3.12.2"
|
||||||
filelock = "*"
|
filelock = "*"
|
||||||
fuzzywuzzy = {extras = ["speedup"], version = "*"}
|
fuzzywuzzy = {extras = ["speedup"], version = "*"}
|
||||||
gunicorn = "*"
|
gunicorn = "*"
|
||||||
imap-tools = "*"
|
imap-tools = "*"
|
||||||
langdetect = "*"
|
langdetect = "*"
|
||||||
# numpy 1.20.0 drops python 3.6 support
|
numpy = "~=1.20.0"
|
||||||
numpy = "~=1.19.5"
|
|
||||||
pathvalidate = "*"
|
pathvalidate = "*"
|
||||||
pillow = "~=8.1"
|
pillow = "~=8.1"
|
||||||
pikepdf = "~=2.5"
|
pikepdf = "~=2.5"
|
||||||
@@ -34,13 +33,11 @@ psycopg2-binary = "*"
|
|||||||
redis = "*"
|
redis = "*"
|
||||||
# Pinned because aarch64 wheels and updates cause warnings when loading the classifier model.
|
# Pinned because aarch64 wheels and updates cause warnings when loading the classifier model.
|
||||||
scikit-learn="==0.24.0"
|
scikit-learn="==0.24.0"
|
||||||
# Prevent scipy updates because 1.6 is incompatible with python 3.6
|
whitenoise = "~=5.3.0"
|
||||||
scipy="~=1.5.4"
|
watchdog = "~=2.1.0"
|
||||||
whitenoise = "~=5.2.0"
|
|
||||||
watchdog = "~=1.0.0"
|
|
||||||
whoosh="~=2.7.4"
|
whoosh="~=2.7.4"
|
||||||
inotifyrecursive = "~=0.3.4"
|
inotifyrecursive = "~=0.3.4"
|
||||||
ocrmypdf = "~=12.0"
|
ocrmypdf = "~=12.3"
|
||||||
tqdm = "*"
|
tqdm = "*"
|
||||||
tika = "*"
|
tika = "*"
|
||||||
# TODO: This will sadly also install daphne+dependencies,
|
# TODO: This will sadly also install daphne+dependencies,
|
||||||
@@ -50,9 +47,10 @@ channels-redis = "*"
|
|||||||
uvicorn = {extras = ["standard"], version = "*"}
|
uvicorn = {extras = ["standard"], version = "*"}
|
||||||
concurrent-log-handler = "*"
|
concurrent-log-handler = "*"
|
||||||
# uvloop 0.15+ incompatible with python 3.6
|
# uvloop 0.15+ incompatible with python 3.6
|
||||||
uvloop = "~=0.14.0"
|
uvloop = "~=0.15"
|
||||||
cryptography = "~=3.4"
|
cryptography = "~=3.4"
|
||||||
"pdfminer.six" = "*"
|
"pdfminer.six" = "*"
|
||||||
|
"backports.zoneinfo" = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
coveralls = "*"
|
coveralls = "*"
|
||||||
|
|||||||
Generated
+656
-557
File diff suppressed because it is too large.
Load diff
@@ -6,6 +6,10 @@
|
|||||||
[](https://hub.docker.com/r/jonaswinkler/paperless-ng)
|
[](https://hub.docker.com/r/jonaswinkler/paperless-ng)
|
||||||
[](https://coveralls.io/github/jonaswinkler/paperless-ng?branch=master)
|
[](https://coveralls.io/github/jonaswinkler/paperless-ng?branch=master)
|
||||||
|
|
||||||
|
# Archive notice
|
||||||
|
|
||||||
|
This project is not dead! Rather, this project is now maintained as a community effort at https://github.com/paperless-ngx/paperless-ngx, a direct continuation of this project and drop-in replacement. Please see their project page and the documentation at https://docs.paperless-ngx.com/ for details.
|
||||||
|
|
||||||
# Paperless-ng
|
# Paperless-ng
|
||||||
|
|
||||||
[Paperless (click me)](https://github.com/the-paperless-project/paperless) is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.
|
[Paperless (click me)](https://github.com/the-paperless-project/paperless) is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.
|
||||||
@@ -62,7 +66,7 @@ If you want to see paperless-ng in action, [more screenshots are available in th
|
|||||||
|
|
||||||
# Getting started
|
# Getting started
|
||||||
|
|
||||||
The recommended way to deploy paperless is docker-compose. The files in the /docker/hub directory are configured to pull the image from Docker Hub.
|
The recommended way to deploy paperless is docker-compose. The files in the /docker/compose directory are configured to pull the image from Docker Hub.
|
||||||
|
|
||||||
Read the [documentation](https://paperless-ng.readthedocs.io/en/latest/setup.html#installation) on how to get started.
|
Read the [documentation](https://paperless-ng.readthedocs.io/en/latest/setup.html#installation) on how to get started.
|
||||||
|
|
||||||
@@ -100,6 +104,7 @@ Paperless has been around a while now, and people are starting to build stuff on
|
|||||||
|
|
||||||
* [Paperless App](https://github.com/bauerj/paperless_app): An Android/iOS app for Paperless. Updated to work with paperless-ng.
|
* [Paperless App](https://github.com/bauerj/paperless_app): An Android/iOS app for Paperless. Updated to work with 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.
|
* [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.
|
||||||
|
|
||||||
These projects also exist, but their status and compatibility with paperless-ng is unknown.
|
These projects also exist, but their status and compatibility with paperless-ng is unknown.
|
||||||
|
|
||||||
|
|||||||
+10
-8
@@ -12,27 +12,29 @@ Note that this role requires root access, so either run it in a playbook with a
|
|||||||
|
|
||||||
- hosts: all
|
- hosts: all
|
||||||
roles:
|
roles:
|
||||||
- role: ansible
|
- role: paperless-ng
|
||||||
become: yes
|
become: yes
|
||||||
|
|
||||||
Role Variables
|
Role Variables
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Most configuration variables from paperless-ng itself are available and accept their respective arguments.
|
Most configuration variables from paperless-ng itself are available and accept their respective arguments.
|
||||||
Every `PAPERLESS_*` configuration varaible is lowercased and instead prefixed with `paperlessng_*` in `defaults/main.yml`.
|
Every `PAPERLESS_*` configuration variable is lowercased and instead prefixed with `paperlessng_*` in `defaults/main.yml`.
|
||||||
|
|
||||||
For a full listing including explainations and allowed values, see the current [documentation](https://paperless-ng.readthedocs.io/en/ng-0.9.14/configuration.html).
|
For a full listing including explanations and allowed values, see the current [documentation](https://paperless-ng.readthedocs.io/en/latest/configuration.html).
|
||||||
|
|
||||||
Additional variables available in this role are listed below, along with default values:
|
Additional variables available in this role are listed below, along with default values:
|
||||||
|
|
||||||
paperlessng_version: 0.9.14
|
paperlessng_version: latest
|
||||||
|
|
||||||
The [release](https://github.com/jonaswinkler/paperless-ng/releases) archive version of paperless-ng to install.
|
The [release](https://github.com/jonaswinkler/paperless-ng/releases) archive version of paperless-ng to install.
|
||||||
|
`latest` stands for the latest release of paperless-ng.
|
||||||
|
To install a specific version of paperless-ng, use the tag name of the release, e. g. `ng-1.4.4`, or specify a branch or commit id.
|
||||||
|
|
||||||
paperlessng_redis_host: localhost
|
paperlessng_redis_host: localhost
|
||||||
paperlessng_redis_port: 6379
|
paperlessng_redis_port: 6379
|
||||||
|
|
||||||
Seperate configuration values that combine into `PAPERLESS_REDIS`.
|
Separate configuration values that combine into `PAPERLESS_REDIS`.
|
||||||
|
|
||||||
paperlessng_db_type: sqlite
|
paperlessng_db_type: sqlite
|
||||||
|
|
||||||
@@ -96,11 +98,11 @@ Example Playbook
|
|||||||
- hosts: all
|
- hosts: all
|
||||||
become: yes
|
become: yes
|
||||||
vars_files:
|
vars_files:
|
||||||
- vars/main.yml
|
- vars/paperless-ng.yml
|
||||||
roles:
|
roles:
|
||||||
- ansible
|
- paperless-ng
|
||||||
|
|
||||||
`vars/main.yml`:
|
`vars/paperless-ng.yml`:
|
||||||
|
|
||||||
paperlessng_media_root: /mnt/media/smbshare
|
paperlessng_media_root: /mnt/media/smbshare
|
||||||
|
|
||||||
|
|||||||
@@ -329,7 +329,7 @@
|
|||||||
- regexp: PAPERLESS_TIKA_ENDPOINT
|
- regexp: PAPERLESS_TIKA_ENDPOINT
|
||||||
line: "PAPERLESS_TIKA_ENDPOINT={{ paperlessng_tika_endpoint }}"
|
line: "PAPERLESS_TIKA_ENDPOINT={{ paperlessng_tika_endpoint }}"
|
||||||
- regexp: PAPERLESS_TIKA_GOTENBERG_ENDPOINT
|
- regexp: PAPERLESS_TIKA_GOTENBERG_ENDPOINT
|
||||||
line: "PAPERLESS_TIKA_GOTENBERG_ENDPOINT={{ paperlessng_tika_endpoint }}"
|
line: "PAPERLESS_TIKA_GOTENBERG_ENDPOINT={{ paperlessng_tika_gotenberg_endpoint }}"
|
||||||
# Software tweaks
|
# Software tweaks
|
||||||
- regexp: PAPERLESS_TIME_ZONE
|
- regexp: PAPERLESS_TIME_ZONE
|
||||||
line: "PAPERLESS_TIME_ZONE={{ paperlessng_time_zone }}"
|
line: "PAPERLESS_TIME_ZONE={{ paperlessng_time_zone }}"
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
COMPOSE_PROJECT_NAME=paperless
|
COMPOSE_PROJECT_NAME=paperless
|
||||||
+38
-38
@@ -4,37 +4,37 @@ set -e
|
|||||||
|
|
||||||
# Source: https://github.com/sameersbn/docker-gitlab/
|
# Source: https://github.com/sameersbn/docker-gitlab/
|
||||||
map_uidgid() {
|
map_uidgid() {
|
||||||
USERMAP_ORIG_UID=$(id -u paperless)
|
USERMAP_ORIG_UID=$(id -u paperless)
|
||||||
USERMAP_ORIG_GID=$(id -g paperless)
|
USERMAP_ORIG_GID=$(id -g paperless)
|
||||||
USERMAP_NEW_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
|
USERMAP_NEW_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
|
||||||
USERMAP_NEW_GID=${USERMAP_GID:-${USERMAP_ORIG_GID:-$USERMAP_NEW_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
|
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"
|
echo "Mapping UID and GID for paperless:paperless to $USERMAP_NEW_UID:$USERMAP_NEW_GID"
|
||||||
usermod -u "${USERMAP_NEW_UID}" paperless
|
usermod -u "${USERMAP_NEW_UID}" paperless
|
||||||
groupmod -o -g "${USERMAP_NEW_GID}" paperless
|
groupmod -o -g "${USERMAP_NEW_GID}" paperless
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
map_uidgid
|
map_uidgid
|
||||||
|
|
||||||
for dir in export data data/index media media/documents media/documents/originals media/documents/thumbnails; do
|
for dir in export data data/index media media/documents media/documents/originals media/documents/thumbnails; do
|
||||||
if [[ ! -d "../$dir" ]]
|
if [[ ! -d "../$dir" ]]; then
|
||||||
then
|
echo "Creating directory ../$dir"
|
||||||
echo "creating directory ../$dir"
|
|
||||||
mkdir ../$dir
|
mkdir ../$dir
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "creating directory /tmp/paperless"
|
echo "Creating directory /tmp/paperless"
|
||||||
mkdir -p /tmp/paperless
|
mkdir -p /tmp/paperless
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
chown -R paperless:paperless ../
|
echo "Adjusting permissions of paperless files. This may take a while."
|
||||||
chown -R paperless:paperless /tmp/paperless
|
chown -R paperless:paperless /tmp/paperless
|
||||||
set -e
|
find .. -not \( -user paperless -and -group paperless \) -exec chown paperless:paperless {} +
|
||||||
|
set -e
|
||||||
|
|
||||||
gosu paperless /sbin/docker-prepare.sh
|
gosu paperless /sbin/docker-prepare.sh
|
||||||
}
|
}
|
||||||
|
|
||||||
install_languages() {
|
install_languages() {
|
||||||
@@ -50,35 +50,35 @@ install_languages() {
|
|||||||
apt-get update
|
apt-get update
|
||||||
|
|
||||||
for lang in "${langs[@]}"; do
|
for lang in "${langs[@]}"; do
|
||||||
pkg="tesseract-ocr-$lang"
|
pkg="tesseract-ocr-$lang"
|
||||||
# English is installed by default
|
# English is installed by default
|
||||||
#if [[ "$lang" == "eng" ]]; then
|
#if [[ "$lang" == "eng" ]]; then
|
||||||
# continue
|
# continue
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
if dpkg -s $pkg &> /dev/null; then
|
if dpkg -s $pkg &>/dev/null; then
|
||||||
echo "package $pkg already installed!"
|
echo "Package $pkg already installed!"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! apt-cache show $pkg &> /dev/null; then
|
if ! apt-cache show $pkg &>/dev/null; then
|
||||||
echo "package $pkg not found! :("
|
echo "Package $pkg not found! :("
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing package $pkg..."
|
echo "Installing package $pkg..."
|
||||||
if ! apt-get -y install "$pkg" &> /dev/null; then
|
if ! apt-get -y install "$pkg" &>/dev/null; then
|
||||||
echo "Could not install $pkg"
|
echo "Could not install $pkg"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "Paperless-ng docker container starting..."
|
echo "Paperless-ng docker container starting..."
|
||||||
|
|
||||||
# Install additional languages if specified
|
# Install additional languages if specified
|
||||||
if [[ ! -z "$PAPERLESS_OCR_LANGUAGES" ]]; then
|
if [[ ! -z "$PAPERLESS_OCR_LANGUAGES" ]]; then
|
||||||
install_languages "$PAPERLESS_OCR_LANGUAGES"
|
install_languages "$PAPERLESS_OCR_LANGUAGES"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
initialize
|
initialize
|
||||||
|
|||||||
+6
-11
@@ -149,22 +149,15 @@ Ansible Route
|
|||||||
|
|
||||||
Most of the update process is automated when using the ansible role.
|
Most of the update process is automated when using the ansible role.
|
||||||
|
|
||||||
1. Backup your defined role variables file outside the paperless source-tree:
|
1. Update the role to the target release tag to make sure the ansible scripts are compatible:
|
||||||
|
|
||||||
.. code:: shell-session
|
.. code:: shell-session
|
||||||
|
|
||||||
$ cp ansible/vars.yml ~/vars.yml.old
|
$ ansible-galaxy install git+https://github.com/jonaswinkler/paperless-ng.git,master --force
|
||||||
|
|
||||||
2. Pull the release tag you want to update to:
|
2. Update the role variable definitions ``vars/paperless-ng.yml`` (where appropriate).
|
||||||
|
|
||||||
.. code:: shell-session
|
3. Run the ansible playbook you created created during :ref:`installation <setup-ansible>` again:
|
||||||
|
|
||||||
$ git fetch --all
|
|
||||||
$ git checkout ng-0.9.14
|
|
||||||
|
|
||||||
3. Update the role variable definitions ``ansible/vars.yml`` (where appropriate).
|
|
||||||
|
|
||||||
4. Run the ansible playbook you created created during :ref:`installation <setup-ansible>` again:
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@@ -247,6 +240,8 @@ Document exporter
|
|||||||
The document exporter exports all your data from paperless into a folder for
|
The document exporter exports all your data from paperless into a folder for
|
||||||
backup or migration to another DMS.
|
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::
|
.. code::
|
||||||
|
|
||||||
document_exporter target [-c] [-f] [-d]
|
document_exporter target [-c] [-f] [-d]
|
||||||
|
|||||||
+35
-12
@@ -5,6 +5,39 @@
|
|||||||
Changelog
|
Changelog
|
||||||
*********
|
*********
|
||||||
|
|
||||||
|
paperless-ng 1.5.0
|
||||||
|
##################
|
||||||
|
|
||||||
|
Support for Python 3.6 was dropped.
|
||||||
|
|
||||||
|
* Updated python dependencies.
|
||||||
|
* Base image of the docker image changed from Debian Buster to Debian Bullseye due to its recent release.
|
||||||
|
* The docker image now uses python 3.9.
|
||||||
|
* Added the Luxembourgish locale. Thanks for translating!
|
||||||
|
* `Daniel Albers`_ added support for making the files and folders ignored by the paperless consume folder scanner configurable. See ``PAPERLESS_CONSUMER_IGNORE_PATTERNS``.
|
||||||
|
|
||||||
|
paperless-ng 1.4.5
|
||||||
|
##################
|
||||||
|
|
||||||
|
This is a maintenance release.
|
||||||
|
|
||||||
|
* Updated Python and Angular dependencies.
|
||||||
|
* Changed the algorithm that changes permissions during startup. This is still fast,
|
||||||
|
and will hopefully cause less issues.
|
||||||
|
* Fixed an issue that would sometimes cause paperless to write an incomplete
|
||||||
|
classification model file to disk.
|
||||||
|
* Fixed an issue with the OCRmyPDF parser that would always try to extract text
|
||||||
|
with PDFminer even from non-PDF files.
|
||||||
|
|
||||||
|
paperless-ng 1.4.4
|
||||||
|
##################
|
||||||
|
|
||||||
|
* Drastically decreased the startup time of the docker container. The startup script adjusts file permissions of all data only if changes are required.
|
||||||
|
* Paperless mail: Added ability to specify the character set for each server.
|
||||||
|
* Document consumption: Ignore Mac OS specific files such as ``.DS_STORE`` and ``._XXXXX.pdf``.
|
||||||
|
* Fixed an issue with the automatic matching algorithm that prevents paperless from consuming new files.
|
||||||
|
* Updated translations.
|
||||||
|
|
||||||
paperless-ng 1.4.3
|
paperless-ng 1.4.3
|
||||||
##################
|
##################
|
||||||
|
|
||||||
@@ -16,7 +49,7 @@ paperless-ng 1.4.3
|
|||||||
* `Michael Shamoon`_ added dark mode for the login and logout pages.
|
* `Michael Shamoon`_ added dark mode for the login and logout pages.
|
||||||
* `Alexander Menk`_ added additional stylesheets for printing. You can now print any page of paperless and the print result will hide the page header, sidebar, and action buttons.
|
* `Alexander Menk`_ added additional stylesheets for printing. You can now print any page of paperless and the print result will hide the page header, sidebar, and action buttons.
|
||||||
* Added support for sorting when using full text search.
|
* Added support for sorting when using full text search.
|
||||||
|
|
||||||
* Fixes
|
* Fixes
|
||||||
|
|
||||||
* `puuu`_ fixed ``PAPERLESS_FORCE_SCRIPT_NAME``. You can now host paperless on sub paths such as ``https://localhost:8000/paperless/``.
|
* `puuu`_ fixed ``PAPERLESS_FORCE_SCRIPT_NAME``. You can now host paperless on sub paths such as ``https://localhost:8000/paperless/``.
|
||||||
@@ -76,17 +109,6 @@ paperless-ng 1.4.0
|
|||||||
To do this, execute the ``document_index reindex`` management command
|
To do this, execute the ``document_index reindex`` management command
|
||||||
(see :ref:`administration-index`).
|
(see :ref:`administration-index`).
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Some packages that paperless depends on are slowly dropping Python 3.6
|
|
||||||
support one after another, including the web server. Supporting Python
|
|
||||||
3.6 means that I cannot update these packages anymore.
|
|
||||||
|
|
||||||
At some point, paperless will drop Python 3.6 support. If using a bare
|
|
||||||
metal installation and you're still on Python 3.6, upgrade to 3.7 or newer.
|
|
||||||
|
|
||||||
If using docker, this does not affect you.
|
|
||||||
|
|
||||||
paperless-ng 1.3.2
|
paperless-ng 1.3.2
|
||||||
##################
|
##################
|
||||||
|
|
||||||
@@ -1460,6 +1482,7 @@ bulk of the work on this big change.
|
|||||||
.. _JOKer: https://github.com/MasterofJOKers
|
.. _JOKer: https://github.com/MasterofJOKers
|
||||||
.. _Brian Cribbs: https://github.com/cribbstechnolog
|
.. _Brian Cribbs: https://github.com/cribbstechnolog
|
||||||
.. _Brendan M. Sleight: https://github.com/bmsleight
|
.. _Brendan M. Sleight: https://github.com/bmsleight
|
||||||
|
.. _Daniel Albers: https://github.com/AlD
|
||||||
|
|
||||||
.. _#20: https://github.com/the-paperless-project/paperless/issues/20
|
.. _#20: https://github.com/the-paperless-project/paperless/issues/20
|
||||||
.. _#44: https://github.com/the-paperless-project/paperless/issues/44
|
.. _#44: https://github.com/the-paperless-project/paperless/issues/44
|
||||||
|
|||||||
+34
-11
@@ -174,11 +174,11 @@ PAPERLESS_AUTO_LOGIN_USERNAME=<username>
|
|||||||
Defaults to none, which disables this feature.
|
Defaults to none, which disables this feature.
|
||||||
|
|
||||||
PAPERLESS_ADMIN_USER=<username>
|
PAPERLESS_ADMIN_USER=<username>
|
||||||
If this environment variable is specified, Paperless automatically creates
|
If this environment variable is specified, Paperless automatically creates
|
||||||
a superuser with the provided username at start. This is useful in cases
|
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
|
where you can not run the `createsuperuser` command seperately, such as Kubernetes
|
||||||
or AWS ECS.
|
or AWS ECS.
|
||||||
|
|
||||||
Requires `PAPERLESS_ADMIN_PASSWORD` to be set.
|
Requires `PAPERLESS_ADMIN_PASSWORD` to be set.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@@ -188,7 +188,7 @@ PAPERLESS_ADMIN_USER=<username>
|
|||||||
the lifecycle of the containers.
|
the lifecycle of the containers.
|
||||||
|
|
||||||
PAPERLESS_ADMIN_MAIL=<email>
|
PAPERLESS_ADMIN_MAIL=<email>
|
||||||
(Optional) Specify superuser email address. Only used when
|
(Optional) Specify superuser email address. Only used when
|
||||||
`PAPERLESS_ADMIN_USER` is set.
|
`PAPERLESS_ADMIN_USER` is set.
|
||||||
|
|
||||||
Defaults to ``root@localhost``.
|
Defaults to ``root@localhost``.
|
||||||
@@ -222,17 +222,24 @@ PAPERLESS_ENABLE_HTTP_REMOTE_USER=<bool>
|
|||||||
Also see the warning `in the official documentation <https://docs.djangoproject.com/en/3.1/howto/auth-remote-user/#configuration>`.
|
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.
|
Defaults to `false` which disables this feature.
|
||||||
|
|
||||||
PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME=<str>
|
PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME=<str>
|
||||||
If `PAPERLESS_ENABLE_HTTP_REMOTE_USER` is enabled, this property allows to
|
If `PAPERLESS_ENABLE_HTTP_REMOTE_USER` is enabled, this property allows to
|
||||||
customize the name of the HTTP header from which the authenticated username
|
customize the name of the HTTP header from which the authenticated username
|
||||||
is extracted. Values are in terms of
|
is extracted. Values are in terms of
|
||||||
[HttpRequest.META](https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.HttpRequest.META).
|
[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
|
Thus, the configured value must start with `HTTP_` followed by the
|
||||||
normalized actual header name.
|
normalized actual header name.
|
||||||
|
|
||||||
Defaults to `HTTP_REMOTE_USER`.
|
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:
|
.. _configuration-ocr:
|
||||||
|
|
||||||
OCR settings
|
OCR settings
|
||||||
@@ -258,6 +265,8 @@ PAPERLESS_OCR_LANGUAGE=<lang>
|
|||||||
|
|
||||||
Defaults to "eng".
|
Defaults to "eng".
|
||||||
|
|
||||||
|
Note: If your language contains a '-' such as chi-sim, you must use chi_sim
|
||||||
|
|
||||||
PAPERLESS_OCR_MODE=<mode>
|
PAPERLESS_OCR_MODE=<mode>
|
||||||
Tell paperless when and how to perform ocr on your documents. Four modes
|
Tell paperless when and how to perform ocr on your documents. Four modes
|
||||||
are available:
|
are available:
|
||||||
@@ -622,6 +631,20 @@ PAPERLESS_IGNORE_DATES=<string>
|
|||||||
|
|
||||||
Defaults to an empty string to not ignore any dates.
|
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
|
Binaries
|
||||||
########
|
########
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Contributing to Paperless
|
|||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
This section is not updated to paperless-ng yet.
|
This section is not updated to paperless-ng yet.
|
||||||
|
|
||||||
Maybe you've been using Paperless for a while and want to add a feature or two,
|
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
|
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
|
beauty of Free software is that you can see what's wrong and help to get it
|
||||||
|
|||||||
+9
-9
@@ -23,10 +23,10 @@ Apart from that, the folder structure is as follows:
|
|||||||
* ``scripts/`` - Various scripts that help with different parts of development.
|
* ``scripts/`` - Various scripts that help with different parts of development.
|
||||||
* ``docker/`` - Files required to build the docker image.
|
* ``docker/`` - Files required to build the docker image.
|
||||||
|
|
||||||
Initial setup and first start
|
Initial setup and first start
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
After you forked and cloned the code from github you need to perform a first-time setup.
|
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:
|
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>`
|
1. Install prerequisites + pipenv as mentioned in :ref:`Bare metal route <setup-bare_metal>`
|
||||||
@@ -35,19 +35,19 @@ To do the setup you need to perform the steps from the following chapters in a c
|
|||||||
|
|
||||||
.. code:: shell-session
|
.. code:: shell-session
|
||||||
|
|
||||||
$ npm install -g @angular/cli
|
$ npm install -g @angular/cli
|
||||||
|
|
||||||
4. Create ``consume`` and ``media`` folders in the cloned root folder.
|
4. Create ``consume`` and ``media`` folders in the cloned root folder.
|
||||||
|
|
||||||
.. code:: shell-session
|
.. code:: shell-session
|
||||||
|
|
||||||
mkdir -p consume media
|
mkdir -p consume media
|
||||||
|
|
||||||
5. You can now either ...
|
5. You can now either ...
|
||||||
|
|
||||||
* install redis or
|
* 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
|
* 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
|
* spin up a bare redis container
|
||||||
|
|
||||||
.. code:: shell-session
|
.. code:: shell-session
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ To do the setup you need to perform the steps from the following chapters in a c
|
|||||||
python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
|
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.
|
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.
|
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
|
Back end development
|
||||||
@@ -207,7 +207,7 @@ Adding new languages requires adding the translated files in the "src-ui/src/loc
|
|||||||
// Add your new language here
|
// 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".
|
``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":
|
3. Import and register the Angular data for this locale in "src-ui/src/app/app.module.ts":
|
||||||
@@ -320,7 +320,7 @@ methods ``parse`` and ``get_thumbnail``. You can provide your own implementation
|
|||||||
|
|
||||||
# The content of the document.
|
# The content of the document.
|
||||||
self.text = "content"
|
self.text = "content"
|
||||||
|
|
||||||
# Optional: path to a PDF document that you created from the original.
|
# Optional: path to a PDF document that you created from the original.
|
||||||
self.archive_path = os.path.join(self.tempdir, "archived.pdf")
|
self.archive_path = os.path.join(self.tempdir, "archived.pdf")
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -68,10 +68,10 @@ 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.
|
in your browser and paperless has to do much less work to serve the data.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
You can adjust some of the settings so that paperless uses less processing
|
You can adjust some of the settings so that paperless uses less processing
|
||||||
power. See :ref:`setup-less_powerful_devices` for details.
|
power. See :ref:`setup-less_powerful_devices` for details.
|
||||||
|
|
||||||
|
|
||||||
**Q:** *How do I install paperless-ng on Raspberry Pi?*
|
**Q:** *How do I install paperless-ng on Raspberry Pi?*
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ resources in the documentation:
|
|||||||
paperless-ng.
|
paperless-ng.
|
||||||
* Paperless is now integrated with a
|
* Paperless is now integrated with a
|
||||||
:ref:`task processing queue <setup-task_processor>` that tells you
|
:ref:`task processing queue <setup-task_processor>` that tells you
|
||||||
at a glance when and why something is not working.
|
at a glance when and why something is not working.
|
||||||
* The :ref:`changelog <paperless_changelog>` contains a detailed list of all changes
|
* The :ref:`changelog <paperless_changelog>` contains a detailed list of all changes
|
||||||
in paperless-ng.
|
in paperless-ng.
|
||||||
|
|
||||||
|
|||||||
+35
-25
@@ -13,42 +13,48 @@ that works right for you based on recommendations from other Paperless users.
|
|||||||
Physical scanners
|
Physical scanners
|
||||||
=================
|
=================
|
||||||
|
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brand | Model | Supports | Recommended By |
|
| Brand | Model | Supports | Recommended By |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| | | FTP | NFS | SMB | SMTP | |
|
| | | FTP | NFS | SMB | SMTP | API [1]_ | |
|
||||||
+=========+================+=====+=====+=====+======+================+
|
+=========+================+=====+=====+=====+======+==========+================+
|
||||||
| Brother | `ADS-1700W`_ | yes | no | yes | yes |`holzhannes`_ |
|
| Brother | `ADS-1700W`_ | yes | no | yes | yes | |`holzhannes`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `ADS-1600W`_ | yes | no | yes | yes |`holzhannes`_ |
|
| Brother | `ADS-1600W`_ | yes | no | yes | yes | |`holzhannes`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `ADS-1500W`_ | yes | no | yes | yes |`danielquinn`_ |
|
| Brother | `ADS-1500W`_ | yes | no | yes | yes | |`danielquinn`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `MFC-J6930DW`_ | yes | | | |`ayounggun`_ |
|
| Brother | `ADS-1100W`_ | yes | no | no | no | |`ytzelf`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `MFC-L5850DW`_ | yes | | | yes |`holzhannes`_ |
|
| Brother | `MFC-J6930DW`_ | yes | | | | |`ayounggun`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `MFC-J5910DW`_ | yes | | | |`bmsleight`_ |
|
| Brother | `MFC-L5850DW`_ | yes | | | yes | |`holzhannes`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Brother | `MFC-9142CDN`_ | yes | | yes | |`REOLDEV`_ |
|
| Brother | `MFC-J5910DW`_ | yes | | | | |`bmsleight`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Fujitsu | `ix500`_ | yes | | yes | |`eonist`_ |
|
| Brother | `MFC-9142CDN`_ | yes | | yes | | |`REOLDEV`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Epson | `WF-7710DWF`_ | yes | | yes | |`Skylinar`_ |
|
| Fujitsu | `ix500`_ | yes | | yes | | |`eonist`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
| Fujitsu | `S1300i`_ | yes | | yes | |`jonaswinkler`_ |
|
| Epson | `WF-7710DWF`_ | yes | | yes | | |`Skylinar`_ |
|
||||||
+---------+----------------+-----+-----+-----+------+----------------+
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
|
| Fujitsu | `S1300i`_ | yes | | yes | | |`jonaswinkler`_ |
|
||||||
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
|
| Doxie | `Q2`_ | no | no | no | no | yes |`Unkn0wnCat`_ |
|
||||||
|
+---------+----------------+-----+-----+-----+------+----------+----------------+
|
||||||
|
|
||||||
.. _MFC-L5850DW: https://www.brother-usa.com/products/mfcl5850dw
|
.. _MFC-L5850DW: https://www.brother-usa.com/products/mfcl5850dw
|
||||||
.. _ADS-1700W: https://www.brother-usa.com/products/ads1700w
|
.. _ADS-1700W: https://www.brother-usa.com/products/ads1700w
|
||||||
.. _ADS-1600W: https://www.brother-usa.com/products/ads1600w
|
.. _ADS-1600W: https://www.brother-usa.com/products/ads1600w
|
||||||
.. _ADS-1500W: https://www.brother.ca/en/p/ads1500w
|
.. _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
|
||||||
.. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW
|
.. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW
|
||||||
.. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw
|
.. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw
|
||||||
.. _MFC-9142CDN: https://www.brother.co.uk/printers/laser-printers/mfc9140cdn
|
.. _MFC-9142CDN: https://www.brother.co.uk/printers/laser-printers/mfc9140cdn
|
||||||
.. _ix500: http://www.fujitsu.com/us/products/computing/peripheral/scanners/scansnap/ix500/
|
.. _ix500: http://www.fujitsu.com/us/products/computing/peripheral/scanners/scansnap/ix500/
|
||||||
.. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf
|
.. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf
|
||||||
.. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/
|
.. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/
|
||||||
|
.. _Q2: https://www.getdoxie.com/product/doxie-q/
|
||||||
|
|
||||||
|
|
||||||
.. _danielquinn: https://github.com/danielquinn
|
.. _danielquinn: https://github.com/danielquinn
|
||||||
@@ -59,6 +65,10 @@ Physical scanners
|
|||||||
.. _Skylinar: https://github.com/Skylinar
|
.. _Skylinar: https://github.com/Skylinar
|
||||||
.. _jonaswinkler: https://github.com/jonaswinkler
|
.. _jonaswinkler: https://github.com/jonaswinkler
|
||||||
.. _holzhannes: https://github.com/holzhannes
|
.. _holzhannes: https://github.com/holzhannes
|
||||||
|
.. _ytzelf: https://github.com/ytzelf
|
||||||
|
.. _Unkn0wnCat: https://github.com/Unkn0wnCat
|
||||||
|
|
||||||
|
.. [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
|
Mobile phone software
|
||||||
=====================
|
=====================
|
||||||
|
|||||||
+26
-6
@@ -116,9 +116,7 @@ performs all the steps described in :ref:`setup-docker_hub` automatically.
|
|||||||
|
|
||||||
.. code:: shell-session
|
.. code:: shell-session
|
||||||
|
|
||||||
$ wget https://raw.githubusercontent.com/jonaswinkler/paperless-ng/master/install-paperless-ng.sh
|
$ curl -L https://raw.githubusercontent.com/jonaswinkler/paperless-ng/master/install-paperless-ng.sh | bash
|
||||||
$ chmod +x install-paperless-ng.sh
|
|
||||||
$ ./install-paperless-ng.sh
|
|
||||||
|
|
||||||
.. _setup-docker_hub:
|
.. _setup-docker_hub:
|
||||||
|
|
||||||
@@ -173,6 +171,24 @@ Install Paperless from Docker Hub
|
|||||||
|
|
||||||
Don't change the part after the colon or paperless wont find your documents.
|
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
|
5. Modify ``docker-compose.env``, following the comments in the file. The
|
||||||
most important change is to set ``USERMAP_UID`` and ``USERMAP_GID``
|
most important change is to set ``USERMAP_UID`` and ``USERMAP_GID``
|
||||||
@@ -286,7 +302,7 @@ writing. Windows is not and will never be supported.
|
|||||||
|
|
||||||
Use this list for your preferred package management:
|
Use this list for your preferred package management:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
python3 python3-pip python3-dev imagemagick fonts-liberation optipng gnupg libpq-dev libmagic-dev mime-support
|
python3 python3-pip python3-dev imagemagick fonts-liberation optipng gnupg libpq-dev libmagic-dev mime-support
|
||||||
|
|
||||||
@@ -305,7 +321,7 @@ writing. Windows is not and will never be supported.
|
|||||||
|
|
||||||
Use this list for your preferred package management:
|
Use this list for your preferred package management:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr
|
unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr
|
||||||
|
|
||||||
@@ -360,7 +376,11 @@ writing. Windows is not and will never be supported.
|
|||||||
Adjust as necessary if you configured different folders.
|
Adjust as necessary if you configured different folders.
|
||||||
|
|
||||||
8. Install python requirements from the ``requirements.txt`` file.
|
8. Install python requirements from the ``requirements.txt`` file.
|
||||||
It is up to you if you wish to use a virtual environment or not.
|
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
|
.. code:: shell-session
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ UserWarning in sklearn on every single document
|
|||||||
You may encounter warnings like this:
|
You may encounter warnings like this:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
/usr/local/lib/python3.7/site-packages/sklearn/base.py:315:
|
/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.
|
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 might lead to breaking code or invalid results. Use at your own risk.
|
||||||
@@ -200,13 +200,13 @@ This might have multiple reasons.
|
|||||||
File "/usr/local/lib/python3.7/site-packages/gunicorn/http/wsgi.py", line 386, in sendfile
|
File "/usr/local/lib/python3.7/site-packages/gunicorn/http/wsgi.py", line 386, in sendfile
|
||||||
sent += os.sendfile(sockno, fileno, offset + sent, count)
|
sent += os.sendfile(sockno, fileno, offset + sent, count)
|
||||||
OSError: [Errno 22] Invalid argument
|
OSError: [Errno 22] Invalid argument
|
||||||
|
|
||||||
To fix this issue, add
|
To fix this issue, add
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
SENDFILE=0
|
SENDFILE=0
|
||||||
|
|
||||||
to your `docker-compose.env` file.
|
to your `docker-compose.env` file.
|
||||||
|
|
||||||
Error while reading metadata
|
Error while reading metadata
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ your documents:
|
|||||||
|
|
||||||
This process can be configured to fit your needs. If you don't want paperless
|
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
|
to create archived versions for digital documents, you can configure that by
|
||||||
configuring ``PAPERLESS_OCR_MODE=skip_noarchive``. Please read the
|
configuring ``PAPERLESS_OCR_MODE=skip_noarchive``. Please read the
|
||||||
:ref:`relevant section in the documentation <configuration-ocr>`.
|
:ref:`relevant section in the documentation <configuration-ocr>`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@@ -289,7 +289,7 @@ Matching specific tags, correspondents or types:
|
|||||||
Matching dates:
|
Matching dates:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
created:[2005 to 2009]
|
created:[2005 to 2009]
|
||||||
added:yesterday
|
added:yesterday
|
||||||
modified:today
|
modified:today
|
||||||
@@ -306,11 +306,11 @@ Matching inexact words:
|
|||||||
auto complete and query correction.
|
auto complete and query correction.
|
||||||
|
|
||||||
All of these constructs can be combined as you see fit.
|
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.
|
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>`_.
|
Head over to `Whoosh query language <https://whoosh.readthedocs.io/en/latest/querylang.html>`_.
|
||||||
For details on what date parsing utilities are available, see
|
For details on what date parsing utilities are available, see
|
||||||
`Date parsing <https://whoosh.readthedocs.io/en/latest/dates.html#parsing-date-queries>`_.
|
`Date parsing <https://whoosh.readthedocs.io/en/latest/dates.html#parsing-date-queries>`_.
|
||||||
|
|
||||||
|
|
||||||
.. _usage-recommended_workflow:
|
.. _usage-recommended_workflow:
|
||||||
|
|
||||||
@@ -385,7 +385,7 @@ Once you have scanned in a document, proceed in paperless as follows.
|
|||||||
6. Remove inbox tags from the documents.
|
6. Remove inbox tags from the documents.
|
||||||
|
|
||||||
.. hint::
|
.. hint::
|
||||||
|
|
||||||
You can setup manual matching rules for your correspondents and tags and
|
You can setup manual matching rules for your correspondents and tags and
|
||||||
paperless will assign them automatically. After consuming a couple documents,
|
paperless will assign them automatically. After consuming a couple documents,
|
||||||
you can even ask paperless to *learn* when to assign tags and correspondents
|
you can even ask paperless to *learn* when to assign tags and correspondents
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
#PAPERLESS_CONSUMER_POLLING=10
|
#PAPERLESS_CONSUMER_POLLING=10
|
||||||
#PAPERLESS_CONSUMER_DELETE_DUPLICATES=false
|
#PAPERLESS_CONSUMER_DELETE_DUPLICATES=false
|
||||||
#PAPERLESS_CONSUMER_RECURSIVE=false
|
#PAPERLESS_CONSUMER_RECURSIVE=false
|
||||||
|
#PAPERLESS_CONSUMER_IGNORE_PATTERNS=[".DS_STORE/*", "._*", ".stfolder/*"]
|
||||||
#PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false
|
#PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false
|
||||||
#PAPERLESS_OPTIMIZE_THUMBNAILS=true
|
#PAPERLESS_OPTIMIZE_THUMBNAILS=true
|
||||||
#PAPERLESS_POST_CONSUME_SCRIPT=/path/to/an/arbitrary/script.sh
|
#PAPERLESS_POST_CONSUME_SCRIPT=/path/to/an/arbitrary/script.sh
|
||||||
|
|||||||
+42
-39
@@ -8,42 +8,44 @@
|
|||||||
-i https://pypi.python.org/simple
|
-i https://pypi.python.org/simple
|
||||||
--extra-index-url https://www.piwheels.org/simple
|
--extra-index-url https://www.piwheels.org/simple
|
||||||
aioredis==1.3.1
|
aioredis==1.3.1
|
||||||
arrow==1.1.0; python_version >= '3.6'
|
arrow==1.1.1; python_version >= '3.6'
|
||||||
asgiref==3.3.4; python_version >= '3.6'
|
asgiref==3.4.1; python_version >= '3.6'
|
||||||
async-timeout==3.0.1; python_full_version >= '3.5.3'
|
async-timeout==3.0.1; python_full_version >= '3.5.3'
|
||||||
attrs==21.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
attrs==21.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
||||||
autobahn==21.3.1; python_version >= '3.7'
|
autobahn==21.3.1; python_version >= '3.7'
|
||||||
automat==20.2.0
|
automat==20.2.0
|
||||||
blessed==1.18.0
|
backports.zoneinfo==0.2.1
|
||||||
certifi==2020.12.5
|
blessed==1.18.1; python_version >= '2.7'
|
||||||
cffi==1.14.5
|
certifi==2021.5.30
|
||||||
channels-redis==3.2.0
|
cffi==1.14.6
|
||||||
channels==3.0.3
|
channels-redis==3.3.0
|
||||||
|
channels==3.0.4
|
||||||
chardet==4.0.0; python_version >= '3.1'
|
chardet==4.0.0; python_version >= '3.1'
|
||||||
click==7.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
charset-normalizer==2.0.4; python_version >= '3'
|
||||||
coloredlogs==15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
click==8.0.1; 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.19
|
concurrent-log-handler==0.9.19
|
||||||
constantly==15.1.0
|
constantly==15.1.0
|
||||||
cryptography==3.4.7
|
cryptography==3.4.7
|
||||||
daphne==3.0.2; python_version >= '3.6'
|
daphne==3.0.2; python_version >= '3.6'
|
||||||
dateparser==1.0.0
|
dateparser==1.0.0
|
||||||
django-cors-headers==3.7.0
|
django-cors-headers==3.8.0
|
||||||
django-extensions==3.1.3
|
django-extensions==3.1.3
|
||||||
django-filter==2.4.0
|
django-filter==2.4.0
|
||||||
django-picklefield==3.0.1; python_version >= '3'
|
django-picklefield==3.0.1; python_version >= '3'
|
||||||
django-q==1.3.4
|
django-q==1.3.9
|
||||||
django==3.2.3
|
django==3.2.6
|
||||||
djangorestframework==3.12.4
|
djangorestframework==3.12.4
|
||||||
filelock==3.0.12
|
filelock==3.0.12
|
||||||
fuzzywuzzy[speedup]==0.18.0
|
fuzzywuzzy[speedup]==0.18.0
|
||||||
gunicorn==20.1.0
|
gunicorn==20.1.0
|
||||||
h11==0.12.0; python_version >= '3.6'
|
h11==0.12.0; python_version >= '3.6'
|
||||||
hiredis==2.0.0; python_version >= '3.6'
|
hiredis==2.0.0; python_version >= '3.6'
|
||||||
httptools==0.1.2
|
httptools==0.2.0
|
||||||
humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
humanfriendly==9.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
||||||
hyperlink==21.0.0
|
hyperlink==21.0.0
|
||||||
idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
idna==3.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
imap-tools==0.41.0
|
imap-tools==0.46.0
|
||||||
img2pdf==0.4.1
|
img2pdf==0.4.1
|
||||||
incremental==21.3.0
|
incremental==21.3.0
|
||||||
inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
@@ -52,49 +54,50 @@ joblib==1.0.1; python_version >= '3.6'
|
|||||||
langdetect==1.0.9
|
langdetect==1.0.9
|
||||||
lxml==4.6.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
lxml==4.6.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
||||||
msgpack==1.0.2
|
msgpack==1.0.2
|
||||||
numpy==1.19.5
|
numpy==1.20.3
|
||||||
ocrmypdf==12.0.1
|
ocrmypdf==12.3.2
|
||||||
pathvalidate==2.4.1
|
pathvalidate==2.4.1
|
||||||
pdfminer.six==20201018
|
pdfminer.six==20201018
|
||||||
pikepdf==2.12.0
|
pikepdf==2.16.1
|
||||||
pillow==8.2.0
|
pillow==8.3.1
|
||||||
pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
portalocker==2.3.0; python_version >= '3'
|
portalocker==2.3.0; python_version >= '3'
|
||||||
psycopg2-binary==2.8.6
|
psycopg2-binary==2.9.1
|
||||||
pyasn1-modules==0.2.8
|
pyasn1-modules==0.2.8
|
||||||
pyasn1==0.4.8
|
pyasn1==0.4.8
|
||||||
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
||||||
python-dateutil==2.8.1
|
python-dateutil==2.8.2
|
||||||
python-dotenv==0.17.1
|
python-dotenv==0.19.0
|
||||||
python-gnupg==0.4.7
|
python-gnupg==0.4.7
|
||||||
python-levenshtein==0.12.2
|
python-levenshtein==0.12.2
|
||||||
python-magic==0.4.22
|
python-magic==0.4.24
|
||||||
pytz==2021.1
|
pytz==2021.1
|
||||||
pyyaml==5.4.1
|
pyyaml==5.4.1
|
||||||
redis==3.5.3
|
redis==3.5.3
|
||||||
regex==2021.4.4
|
regex==2021.8.3
|
||||||
reportlab==3.5.67; python_version >= '2.7' and python_version < '4'
|
reportlab==3.6.1; python_version >= '2.7' and python_version < '4'
|
||||||
requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
requests==2.26.0; 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
|
scikit-learn==0.24.0
|
||||||
scipy==1.5.4
|
scipy==1.7.1; python_version < '3.10' and python_version >= '3.7'
|
||||||
service-identity==21.1.0
|
service-identity==21.1.0
|
||||||
six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
|
||||||
sortedcontainers==2.3.0
|
sortedcontainers==2.4.0
|
||||||
sqlparse==0.4.1; python_version >= '3.5'
|
sqlparse==0.4.1; python_version >= '3.5'
|
||||||
threadpoolctl==2.1.0; python_version >= '3.5'
|
threadpoolctl==2.2.0; python_version >= '3.6'
|
||||||
tika==1.24
|
tika==1.24
|
||||||
tqdm==4.60.0
|
tqdm==4.62.1
|
||||||
twisted[tls]==21.2.0; python_full_version >= '3.5.4'
|
twisted[tls]==21.7.0; python_full_version >= '3.6.7'
|
||||||
txaio==21.2.1; python_version >= '3.6'
|
txaio==21.2.1; python_version >= '3.6'
|
||||||
tzlocal==2.1
|
typing-extensions==3.10.0.0
|
||||||
urllib3==1.26.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'
|
tzlocal==3.0; python_version >= '3.6'
|
||||||
uvicorn[standard]==0.13.4
|
urllib3==1.26.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'
|
||||||
uvloop==0.14.0
|
uvicorn[standard]==0.15.0
|
||||||
watchdog==1.0.2
|
uvloop==0.16.0
|
||||||
|
watchdog==2.1.3
|
||||||
watchgod==0.7
|
watchgod==0.7
|
||||||
wcwidth==0.2.5
|
wcwidth==0.2.5
|
||||||
websockets==8.1
|
websockets==9.1
|
||||||
whitenoise==5.2.0
|
whitenoise==5.3.0
|
||||||
whoosh==2.7.4
|
whoosh==2.7.4
|
||||||
zope.interface==5.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
zope.interface==5.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
||||||
+2
-2
@@ -27,7 +27,8 @@
|
|||||||
"ru-RU": "src/locale/messages.ru_RU.xlf",
|
"ru-RU": "src/locale/messages.ru_RU.xlf",
|
||||||
"es-ES": "src/locale/messages.es_ES.xlf",
|
"es-ES": "src/locale/messages.es_ES.xlf",
|
||||||
"pl-PL": "src/locale/messages.pl_PL.xlf",
|
"pl-PL": "src/locale/messages.pl_PL.xlf",
|
||||||
"sv-SE": "src/locale/messages.sv_SE.xlf"
|
"sv-SE": "src/locale/messages.sv_SE.xlf",
|
||||||
|
"lb-LU": "src/locale/messages.lb_LU.xlf"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"architect": {
|
"architect": {
|
||||||
@@ -72,7 +73,6 @@
|
|||||||
"optimization": true,
|
"optimization": true,
|
||||||
"outputHashing": "none",
|
"outputHashing": "none",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"extractCss": true,
|
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
|
|||||||
@@ -33,4 +33,4 @@ exports.config = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Generated
+20659
-4490
File diff suppressed because it is too large.
Load diff
+20
-20
@@ -11,41 +11,41 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "~10.1.5",
|
"@angular/animations": "~11.2.14",
|
||||||
"@angular/common": "~10.1.5",
|
"@angular/common": "~11.2.14",
|
||||||
"@angular/compiler": "~10.1.5",
|
"@angular/compiler": "~11.2.14",
|
||||||
"@angular/core": "~10.1.5",
|
"@angular/core": "~11.2.14",
|
||||||
"@angular/forms": "~10.1.5",
|
"@angular/forms": "~11.2.14",
|
||||||
"@angular/localize": "~10.1.5",
|
"@angular/localize": "~11.2.14",
|
||||||
"@angular/platform-browser": "~10.1.5",
|
"@angular/platform-browser": "~11.2.14",
|
||||||
"@angular/platform-browser-dynamic": "~10.1.5",
|
"@angular/platform-browser-dynamic": "~11.2.14",
|
||||||
"@angular/router": "~10.1.5",
|
"@angular/router": "~11.2.14",
|
||||||
"@ng-bootstrap/ng-bootstrap": "^8.0.4",
|
"@ng-bootstrap/ng-bootstrap": "^9.1.2",
|
||||||
"@ng-select/ng-select": "^5.0.9",
|
"@ng-select/ng-select": "^7.0.0",
|
||||||
"bootstrap": "^4.5.0",
|
"bootstrap": "^4.5.0",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"ng-bootstrap": "^1.6.3",
|
|
||||||
"ng2-pdf-viewer": "^6.3.2",
|
"ng2-pdf-viewer": "^6.3.2",
|
||||||
|
"ngx-bootstrap": "^6.2.0",
|
||||||
"ngx-color": "^6.2.0",
|
"ngx-color": "^6.2.0",
|
||||||
"ngx-cookie-service": "^10.1.1",
|
"ngx-cookie-service": "^10.1.1",
|
||||||
"ngx-file-drop": "^10.0.0",
|
"ngx-file-drop": "^11.1.0",
|
||||||
"ngx-infinite-scroll": "^9.1.0",
|
"ngx-infinite-scroll": "^9.1.0",
|
||||||
"rxjs": "~6.6.0",
|
"rxjs": "~6.6.0",
|
||||||
"tslib": "^2.0.0",
|
"tslib": "^2.0.0",
|
||||||
"uuid": "^8.3.1",
|
"uuid": "^8.3.1",
|
||||||
"zone.js": "~0.10.2"
|
"zone.js": "~0.11.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^0.1002.0",
|
"@angular-devkit/build-angular": "~0.1102.13",
|
||||||
"@angular/cli": "~10.1.5",
|
"@angular/cli": "~11.2.14",
|
||||||
"@angular/compiler-cli": "~10.1.5",
|
"@angular/compiler-cli": "~11.2.14",
|
||||||
"@types/jasmine": "~3.5.0",
|
"@types/jasmine": "~3.6.0",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "^12.11.1",
|
"@types/node": "^12.11.1",
|
||||||
"codelyzer": "^6.0.0",
|
"codelyzer": "^6.0.0",
|
||||||
"jasmine-core": "~3.6.0",
|
"jasmine-core": "~3.6.0",
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
"jasmine-spec-reporter": "~5.0.0",
|
||||||
"karma": "~5.0.0",
|
"karma": "~6.3.3",
|
||||||
"karma-chrome-launcher": "~3.1.0",
|
"karma-chrome-launcher": "~3.1.0",
|
||||||
"karma-coverage-istanbul-reporter": "~3.0.2",
|
"karma-coverage-istanbul-reporter": "~3.0.2",
|
||||||
"karma-jasmine": "~4.0.0",
|
"karma-jasmine": "~4.0.0",
|
||||||
@@ -53,6 +53,6 @@
|
|||||||
"protractor": "~7.0.0",
|
"protractor": "~7.0.0",
|
||||||
"ts-node": "~8.3.0",
|
"ts-node": "~8.3.0",
|
||||||
"tslint": "~6.1.0",
|
"tslint": "~6.1.0",
|
||||||
"typescript": "~4.0.2"
|
"typescript": "~4.1.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ const routes: Routes = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [RouterModule.forRoot(routes)],
|
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],
|
||||||
exports: [RouterModule]
|
exports: [RouterModule]
|
||||||
})
|
})
|
||||||
export class AppRoutingModule { }
|
export class AppRoutingModule { }
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
<app-toasts></app-toasts>
|
<app-toasts></app-toasts>
|
||||||
|
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
@@ -45,7 +45,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.consumerStatusService.connect()
|
this.consumerStatusService.connect()
|
||||||
|
|
||||||
|
|
||||||
this.successSubscription = this.consumerStatusService.onDocumentConsumptionFinished().subscribe(status => {
|
this.successSubscription = this.consumerStatusService.onDocumentConsumptionFinished().subscribe(status => {
|
||||||
if (this.showNotification(SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUCCESS)) {
|
if (this.showNotification(SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUCCESS)) {
|
||||||
this.toastService.show({title: $localize`Document added`, delay: 10000, content: $localize`Document ${status.filename} was added to paperless.`, actionName: $localize`Open document`, action: () => {
|
this.toastService.show({title: $localize`Document added`, delay: 10000, content: $localize`Document ${status.filename} was added to paperless.`, actionName: $localize`Open document`, action: () => {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ import localeRu from '@angular/common/locales/ru';
|
|||||||
import localeEs from '@angular/common/locales/es';
|
import localeEs from '@angular/common/locales/es';
|
||||||
import localePl from '@angular/common/locales/pl';
|
import localePl from '@angular/common/locales/pl';
|
||||||
import localeSv from '@angular/common/locales/sv';
|
import localeSv from '@angular/common/locales/sv';
|
||||||
|
import localeLb from '@angular/common/locales/lb';
|
||||||
|
|
||||||
|
|
||||||
registerLocaleData(localeFr)
|
registerLocaleData(localeFr)
|
||||||
@@ -90,6 +91,7 @@ registerLocaleData(localeRu)
|
|||||||
registerLocaleData(localeEs)
|
registerLocaleData(localeEs)
|
||||||
registerLocaleData(localePl)
|
registerLocaleData(localePl)
|
||||||
registerLocaleData(localeSv)
|
registerLocaleData(localeSv)
|
||||||
|
registerLocaleData(localeLb)
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export class ConfirmDialogComponent implements OnInit {
|
|||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
buttonsEnabled = true
|
buttonsEnabled = true
|
||||||
|
|
||||||
confirmButtonEnabled = true
|
confirmButtonEnabled = true
|
||||||
seconds = 0
|
seconds = 0
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ export class FilterableDropdownSelectionModel {
|
|||||||
if (fireEvent) {
|
if (fireEvent) {
|
||||||
this.changed.next(this)
|
this.changed.next(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getNonTemporary(id: number) {
|
private getNonTemporary(id: number) {
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@
|
|||||||
<path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/>
|
<path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/>
|
||||||
</svg>
|
</svg>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mr-1">
|
<div class="mr-1">
|
||||||
<app-tag *ngIf="isTag; else displayName" [tag]="item" [clickable]="true" linkTitle="Filter by tag"></app-tag>
|
<app-tag *ngIf="isTag; else displayName" [tag]="item" [clickable]="true" linkTitle="Filter by tag"></app-tag>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export class AbstractInputComponent<T> implements OnInit, ControlValueAccessor {
|
|||||||
constructor() { }
|
constructor() { }
|
||||||
|
|
||||||
onChange = (newValue: T) => {};
|
onChange = (newValue: T) => {};
|
||||||
|
|
||||||
onTouched = () => {};
|
onTouched = () => {};
|
||||||
|
|
||||||
writeValue(newValue: any): void {
|
writeValue(newValue: any): void {
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
<input type="checkbox" class="custom-control-input" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" (blur)="onTouched()" [disabled]="disabled">
|
<input type="checkbox" class="custom-control-input" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" (blur)="onTouched()" [disabled]="disabled">
|
||||||
<label class="custom-control-label" [for]="inputId">{{title}}</label>
|
<label class="custom-control-label" [for]="inputId">{{title}}</label>
|
||||||
<small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
|
<small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
|
||||||
</div>
|
</div>
|
||||||
@@ -15,7 +15,7 @@ import { AbstractInputComponent } from '../abstract-input';
|
|||||||
})
|
})
|
||||||
export class CheckComponent extends AbstractInputComponent<boolean> {
|
export class CheckComponent extends AbstractInputComponent<boolean> {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text" [style.background-color]="value"> </span>
|
<span class="input-group-text" [style.background-color]="value"> </span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ng-template #popContent>
|
<ng-template #popContent>
|
||||||
<div style="min-width: 200px;" class="pb-3">
|
<div style="min-width: 200px;" class="pb-3">
|
||||||
<color-slider [color]="value" (onChangeComplete)="colorChanged($event.color.hex)"></color-slider>
|
<color-slider [color]="value" (onChangeComplete)="colorChanged($event.color.hex)"></color-slider>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<input class="form-control" [class.is-invalid]="error" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" [autoClose]="'outside'" [ngbPopover]="popContent" placement="bottom" popoverClass="shadow">
|
<input class="form-control" [class.is-invalid]="error" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" [autoClose]="'outside'" [ngbPopover]="popContent" placement="bottom" popoverClass="shadow">
|
||||||
@@ -30,4 +30,4 @@
|
|||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback">
|
||||||
{{error}}
|
{{error}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -11,4 +11,4 @@
|
|||||||
</div>
|
</div>
|
||||||
<small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
|
<small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -5,4 +5,4 @@
|
|||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback">
|
||||||
{{error}}
|
{{error}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-outline-dark" (click)="cancelClicked()" i18n>Cancel</button>
|
<button type="button" class="btn btn-outline-dark" (click)="cancelClicked()" i18n>Cancel</button>
|
||||||
<button type="button" class="btn btn-primary" (click)="selectClicked.emit(selected)" i18n>Select</button>
|
<button type="button" class="btn btn-primary" (click)="selectClicked.emit(selected)" i18n>Select</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
<span *ngIf="!clickable" class="badge" [style.background]="tag.color" [style.color]="tag.text_color">{{tag.name}}</span>
|
<span *ngIf="!clickable" class="badge" [style.background]="tag.color" [style.color]="tag.text_color">{{tag.name}}</span>
|
||||||
<a [routerLink]="" [title]="linkTitle" *ngIf="clickable" class="badge" [style.background]="tag.color" [style.color]="tag.text_color">{{tag.name}}</a>
|
<a [routerLink]="" [title]="linkTitle" *ngIf="clickable" class="badge" [style.background]="tag.color" [style.color]="tag.text_color">{{tag.name}}</a>
|
||||||
+1
-1
@@ -23,7 +23,7 @@ export class StatisticsWidgetComponent implements OnInit, OnDestroy {
|
|||||||
statistics: Statistics = {}
|
statistics: Statistics = {}
|
||||||
|
|
||||||
subscription: Subscription
|
subscription: Subscription
|
||||||
|
|
||||||
private getStatistics(): Observable<Statistics> {
|
private getStatistics(): Observable<Statistics> {
|
||||||
return this.http.get(`${environment.apiBaseUrl}statistics/`)
|
return this.http.get(`${environment.apiBaseUrl}statistics/`)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -13,4 +13,4 @@
|
|||||||
<p i18n>Consult the documentation on how to use these features. The section on basic usage also has some information on how to use paperless in general.</p>
|
<p i18n>Consult the documentation on how to use these features. The section on basic usage also has some information on how to use paperless in general.</p>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
</app-widget-frame>
|
</app-widget-frame>
|
||||||
+2
-2
@@ -4,9 +4,9 @@
|
|||||||
<h5 class="card-title mb-0">{{title}}</h5>
|
<h5 class="card-title mb-0">{{title}}</h5>
|
||||||
<ng-content select ="[header-buttons]"></ng-content>
|
<ng-content select ="[header-buttons]"></ng-content>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body text-dark">
|
<div class="card-body text-dark">
|
||||||
<ng-content select ="[content]"></ng-content>
|
<ng-content select ="[content]"></ng-content>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
+1
-1
@@ -20,4 +20,4 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
.metadata-column {
|
.metadata-column {
|
||||||
overflow-wrap: anywhere;
|
overflow-wrap: anywhere;
|
||||||
}
|
}
|
||||||
+1
-1
@@ -64,4 +64,4 @@
|
|||||||
span ::ng-deep .match {
|
span ::ng-deep .match {
|
||||||
color: black;
|
color: black;
|
||||||
background-color: rgb(255, 211, 66);
|
background-color: rgb(255, 211, 66);
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="form-inline d-flex align-items-center">
|
<div class="form-inline d-flex align-items-center">
|
||||||
<div class="input-group input-group-sm flex-fill w-auto">
|
<div class="input-group input-group-sm flex-fill w-auto">
|
||||||
<div class="input-group-prepend" ngbDropdown>
|
<div class="input-group-prepend" ngbDropdown>
|
||||||
<button class="btn btn-outline-primary" ngbDropdownToggle>{{textFilterTargetName}}</button>
|
<button class="btn btn-outline-primary" ngbDropdownToggle>{{textFilterTargetName}}</button>
|
||||||
<div class="dropdown-menu shadow" ngbDropdownMenu>
|
<div class="dropdown-menu shadow" ngbDropdownMenu>
|
||||||
<button *ngFor="let t of textFilterTargets" ngbDropdownItem [class.active]="textFilterTarget == t.id" (click)="changeTextFilterTarget(t.id)">{{t.name}}</button>
|
<button *ngFor="let t of textFilterTargets" ngbDropdownItem [class.active]="textFilterTarget == t.id" (click)="changeTextFilterTarget(t.id)">{{t.name}}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+1
-1
@@ -32,6 +32,6 @@ export class CorrespondentEditDialogComponent extends EditDialogComponent<Paperl
|
|||||||
match: new FormControl(""),
|
match: new FormControl(""),
|
||||||
is_insensitive: new FormControl(true)
|
is_insensitive: new FormControl(true)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ export class CorrespondentListComponent extends GenericListComponent<PaperlessCo
|
|||||||
constructor(correspondentsService: CorrespondentService, modalService: NgbModal,
|
constructor(correspondentsService: CorrespondentService, modalService: NgbModal,
|
||||||
private list: DocumentListViewService,
|
private list: DocumentListViewService,
|
||||||
toastService: ToastService
|
toastService: ToastService
|
||||||
) {
|
) {
|
||||||
super(correspondentsService,modalService,CorrespondentEditDialogComponent, toastService)
|
super(correspondentsService,modalService,CorrespondentEditDialogComponent, toastService)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ import { ToastService } from 'src/app/services/toast.service';
|
|||||||
})
|
})
|
||||||
export class DocumentTypeEditDialogComponent extends EditDialogComponent<PaperlessDocumentType> {
|
export class DocumentTypeEditDialogComponent extends EditDialogComponent<PaperlessDocumentType> {
|
||||||
|
|
||||||
constructor(service: DocumentTypeService, activeModal: NgbActiveModal, toastService: ToastService) {
|
constructor(service: DocumentTypeService, activeModal: NgbActiveModal, toastService: ToastService) {
|
||||||
super(service, activeModal, toastService)
|
super(service, activeModal, toastService)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,4 +49,4 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -52,4 +52,4 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -5,4 +5,4 @@
|
|||||||
<path d="M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5z"/>
|
<path d="M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5zm4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5z"/>
|
||||||
</svg>
|
</svg>
|
||||||
<h1 i18n>404 Not Found</h1>
|
<h1 i18n>404 Not Found</h1>
|
||||||
</div>
|
</div>
|
||||||
@@ -6,7 +6,7 @@ export function cloneFilterRules(filterRules: FilterRule[]): FilterRule[] {
|
|||||||
for (let rule of filterRules) {
|
for (let rule of filterRules) {
|
||||||
newRules.push({rule_type: rule.rule_type, value: rule.value})
|
newRules.push({rule_type: rule.rule_type, value: rule.value})
|
||||||
}
|
}
|
||||||
return newRules
|
return newRules
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -19,4 +19,4 @@ export function isFullTextFilterRule(filterRules: FilterRule[]): boolean {
|
|||||||
export interface FilterRule {
|
export interface FilterRule {
|
||||||
rule_type: number
|
rule_type: number
|
||||||
value: string
|
value: string
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { MatchingModel } from './matching-model';
|
import { MatchingModel } from './matching-model';
|
||||||
|
|
||||||
export interface PaperlessCorrespondent extends MatchingModel {
|
export interface PaperlessCorrespondent extends MatchingModel {
|
||||||
|
|
||||||
last_correspondence?: Date
|
last_correspondence?: Date
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
export interface PaperlessDocumentMetadata {
|
export interface PaperlessDocumentMetadata {
|
||||||
|
|
||||||
original_checksum?: string
|
original_checksum?: string
|
||||||
|
|
||||||
archived_checksum?: string
|
archived_checksum?: string
|
||||||
@@ -10,4 +10,4 @@ export interface PaperlessDocumentMetadata {
|
|||||||
|
|
||||||
has_archive_version?: boolean
|
has_archive_version?: boolean
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,4 +6,4 @@ export interface PaperlessDocumentSuggestions {
|
|||||||
|
|
||||||
document_types?: number[]
|
document_types?: number[]
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -15,4 +15,4 @@ export interface PaperlessSavedView extends ObjectWithId {
|
|||||||
|
|
||||||
filter_rules: FilterRule[]
|
filter_rules: FilterRule[]
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,5 +3,5 @@ export interface Results<T> {
|
|||||||
count: number
|
count: number
|
||||||
|
|
||||||
results: T[]
|
results: T[]
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -8,4 +8,4 @@ export interface WebsocketConsumerStatusMessage {
|
|||||||
message?: string
|
message?: string
|
||||||
document_id: number
|
document_id: number
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ export class ApiVersionInterceptor implements HttpInterceptor {
|
|||||||
'Accept': `application/json; version=${environment.apiVersion}`
|
'Accept': `application/json; version=${environment.apiVersion}`
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return next.handle(request);
|
return next.handle(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ export class CsrfInterceptor implements HttpInterceptor {
|
|||||||
let prefix = ""
|
let prefix = ""
|
||||||
if (this.meta.getTag('name=cookie_prefix')) {
|
if (this.meta.getTag('name=cookie_prefix')) {
|
||||||
prefix = this.meta.getTag('name=cookie_prefix').content
|
prefix = this.meta.getTag('name=cookie_prefix').content
|
||||||
}
|
}
|
||||||
let csrfToken = this.cookieService.get(`${prefix?prefix:''}csrftoken`)
|
let csrfToken = this.cookieService.get(`${prefix?prefix:''}csrftoken`)
|
||||||
if (csrfToken) {
|
if (csrfToken) {
|
||||||
request = request.clone({
|
request = request.clone({
|
||||||
|
|||||||
@@ -11,12 +11,11 @@ const FORMAT_TO_ISO_FORMAT = {
|
|||||||
@Pipe({
|
@Pipe({
|
||||||
name: 'customDate'
|
name: 'customDate'
|
||||||
})
|
})
|
||||||
export class CustomDatePipe extends DatePipe implements PipeTransform {
|
export class CustomDatePipe implements PipeTransform {
|
||||||
|
|
||||||
private defaultLocale: string
|
private defaultLocale: string
|
||||||
|
|
||||||
constructor(@Inject(LOCALE_ID) locale: string, private settings: SettingsService) {
|
constructor(@Inject(LOCALE_ID) locale: string, private datePipe: DatePipe, private settings: SettingsService) {
|
||||||
super(locale)
|
|
||||||
this.defaultLocale = locale
|
this.defaultLocale = locale
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,9 +23,9 @@ export class CustomDatePipe extends DatePipe implements PipeTransform {
|
|||||||
let l = locale || this.settings.get(SETTINGS_KEYS.DATE_LOCALE) || this.defaultLocale
|
let l = locale || this.settings.get(SETTINGS_KEYS.DATE_LOCALE) || this.defaultLocale
|
||||||
let f = format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT)
|
let f = format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT)
|
||||||
if (l == "iso-8601") {
|
if (l == "iso-8601") {
|
||||||
return super.transform(value, FORMAT_TO_ISO_FORMAT[f], timezone)
|
return this.datePipe.transform(value, FORMAT_TO_ISO_FORMAT[f], timezone)
|
||||||
} else {
|
} else {
|
||||||
return super.transform(value, format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT), timezone, l)
|
return this.datePipe.transform(value, format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT), timezone, l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* https://gist.github.com/JonCatmull/ecdf9441aaa37336d9ae2c7f9cb7289a
|
* https://gist.github.com/JonCatmull/ecdf9441aaa37336d9ae2c7f9cb7289a
|
||||||
*
|
*
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2019 Jonathan Catmull.
|
* Copyright (c) 2019 Jonathan Catmull.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -16,4 +16,4 @@ export class SafePipe implements PipeTransform {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ export class OpenDocumentsService {
|
|||||||
|
|
||||||
private MAX_OPEN_DOCUMENTS = 5
|
private MAX_OPEN_DOCUMENTS = 5
|
||||||
|
|
||||||
constructor(private documentService: DocumentService) {
|
constructor(private documentService: DocumentService) {
|
||||||
if (sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)) {
|
if (sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)) {
|
||||||
try {
|
try {
|
||||||
this.openDocuments = JSON.parse(sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS))
|
this.openDocuments = JSON.parse(sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS))
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export class SavedViewService extends AbstractPaperlessService<PaperlessSavedVie
|
|||||||
tap(() => this.reload())
|
tap(() => this.reload())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
patchMany(objects: PaperlessSavedView[]): Observable<PaperlessSavedView[]> {
|
patchMany(objects: PaperlessSavedView[]): Observable<PaperlessSavedView[]> {
|
||||||
return combineLatest(objects.map(o => super.patch(o))).pipe(
|
return combineLatest(objects.map(o => super.patch(o))).pipe(
|
||||||
tap(() => this.reload())
|
tap(() => this.reload())
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import { DocumentService } from './document.service';
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class SearchService {
|
export class SearchService {
|
||||||
|
|
||||||
constructor(private http: HttpClient) { }
|
constructor(private http: HttpClient) { }
|
||||||
|
|
||||||
autocomplete(term: string): Observable<string[]> {
|
autocomplete(term: string): Observable<string[]> {
|
||||||
return this.http.get<string[]>(`${environment.apiBaseUrl}search/autocomplete/`, {params: new HttpParams().set('term', term)})
|
return this.http.get<string[]>(`${environment.apiBaseUrl}search/autocomplete/`, {params: new HttpParams().set('term', term)})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,8 @@ export class SettingsService {
|
|||||||
{code: "ru-ru", name: $localize`Russian`, englishName: "Russian", dateInputFormat: "dd.mm.yyyy"},
|
{code: "ru-ru", name: $localize`Russian`, englishName: "Russian", dateInputFormat: "dd.mm.yyyy"},
|
||||||
{code: "es-es", name: $localize`Spanish`, englishName: "Spanish", dateInputFormat: "dd/mm/yyyy"},
|
{code: "es-es", name: $localize`Spanish`, englishName: "Spanish", dateInputFormat: "dd/mm/yyyy"},
|
||||||
{code: "pl-pl", name: $localize`Polish`, englishName: "Polish", dateInputFormat: "dd.mm.yyyy"},
|
{code: "pl-pl", name: $localize`Polish`, englishName: "Polish", dateInputFormat: "dd.mm.yyyy"},
|
||||||
{code: "sv-se", name: $localize`Swedish`, englishName: "Swedish", dateInputFormat: "yyyy-mm-dd"}
|
{code: "sv-se", name: $localize`Swedish`, englishName: "Swedish", dateInputFormat: "yyyy-mm-dd"},
|
||||||
|
{code: "lb-lu", name: $localize`Luxembourgish`, englishName: "Luxembourgish", dateInputFormat: "dd.mm.yyyy"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ function componentToHex(c) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* https://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
|
* https://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
|
||||||
*
|
*
|
||||||
* Converts an HSL color value to RGB. Conversion formula
|
* Converts an HSL color value to RGB. Conversion formula
|
||||||
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
||||||
* Assumes h, s, and l are contained in the set [0, 1] and
|
* Assumes h, s, and l are contained in the set [0, 1] and
|
||||||
@@ -45,4 +45,4 @@ function hslToRgb(h, s, l){
|
|||||||
export function randomColor() {
|
export function randomColor() {
|
||||||
let rgb = hslToRgb(Math.random(), 0.6, Math.random() * 0.4 + 0.4)
|
let rgb = hslToRgb(Math.random(), 0.6, Math.random() * 0.4 + 0.4)
|
||||||
return `#${componentToHex(rgb[0])}${componentToHex(rgb[1])}${componentToHex(rgb[2])}`
|
return `#${componentToHex(rgb[0])}${componentToHex(rgb[1])}${componentToHex(rgb[2])}`
|
||||||
}
|
}
|
||||||
@@ -56,4 +56,4 @@ export class LocalizedDateParserFormatter extends NgbDateParserFormatter {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ export const environment = {
|
|||||||
apiBaseUrl: document.baseURI + "api/",
|
apiBaseUrl: document.baseURI + "api/",
|
||||||
apiVersion: "2",
|
apiVersion: "2",
|
||||||
appTitle: "Paperless-ng",
|
appTitle: "Paperless-ng",
|
||||||
version: "1.4.3",
|
version: "1.5.0",
|
||||||
webSocketHost: window.location.host,
|
webSocketHost: window.location.host,
|
||||||
webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:"),
|
webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:"),
|
||||||
webSocketBaseUrl: base_url.pathname + "ws/",
|
webSocketBaseUrl: base_url.pathname + "ws/",
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Download originals</target>
|
<target state="needs-translation">Download originals</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="needs-translation">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Suggestions:</target>
|
<target state="needs-translation">Suggestions:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Save current view</target>
|
<target state="needs-translation">Save current view</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="needs-translation">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Modified</target>
|
<target state="needs-translation">Modified</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="needs-translation">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Originale herunterladen</target>
|
<target state="translated">Originale herunterladen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Element hinzufügen</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Vorschläge:</target>
|
<target state="translated">Vorschläge:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Aktuelle Ansicht speichern</target>
|
<target state="translated">Aktuelle Ansicht speichern</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Tag hinzufügen</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Geändert am</target>
|
<target state="translated">Geändert am</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Relevanz</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Download originals</target>
|
<target state="translated">Download originals</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Suggestions:</target>
|
<target state="translated">Suggestions:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Save current view</target>
|
<target state="translated">Save current view</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modified</target>
|
<target state="translated">Modified</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -176,7 +176,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||||
<context context-type="linenumber">117</context>
|
<context context-type="linenumber">117</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Tipo de documento</target>
|
<target state="translated">Correspondencia</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
|
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||||
<context context-type="linenumber">141</context>
|
<context context-type="linenumber">141</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Aggregado</target>
|
<target state="translated">Añadido</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9021887951960049161" datatype="html">
|
<trans-unit id="9021887951960049161" datatype="html">
|
||||||
<source>Confirm delete</source>
|
<source>Confirm delete</source>
|
||||||
@@ -1201,7 +1201,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
||||||
<context context-type="linenumber">61</context>
|
<context context-type="linenumber">61</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
|
<target state="translated">NSA: <x id="PH" equiv-text="rule.value"/></target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5701618810648052610" datatype="html">
|
<trans-unit id="5701618810648052610" datatype="html">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
@@ -1233,7 +1233,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
||||||
<context context-type="linenumber">91</context>
|
<context context-type="linenumber">91</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Advanced search</target>
|
<target state="translated">Búsqueda avanzada</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2649431021108393503" datatype="html">
|
<trans-unit id="2649431021108393503" datatype="html">
|
||||||
<source>More like</source>
|
<source>More like</source>
|
||||||
@@ -1241,7 +1241,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
|
||||||
<context context-type="linenumber">94</context>
|
<context context-type="linenumber">94</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">More like</target>
|
<target state="translated">Más parecido</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
|
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
|
||||||
<source>Filter tags</source>
|
<source>Filter tags</source>
|
||||||
@@ -1386,7 +1386,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
||||||
<context context-type="linenumber">43</context>
|
<context context-type="linenumber">43</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
|
<target state="translated">Creado: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
|
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
|
||||||
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
|
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
|
||||||
@@ -1394,7 +1394,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
||||||
<context context-type="linenumber">44</context>
|
<context context-type="linenumber">44</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
|
<target state="translated">Añadido: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
|
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
|
||||||
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
|
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
|
||||||
@@ -1402,7 +1402,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
|
||||||
<context context-type="linenumber">45</context>
|
<context context-type="linenumber">45</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
|
<target state="translated">Modificado: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7985804062689412812" datatype="html">
|
<trans-unit id="7985804062689412812" datatype="html">
|
||||||
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
|
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
|
||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Descargar originales</target>
|
<target state="translated">Descargar originales</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Añadir elemento</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Sugerencias:</target>
|
<target state="translated">Sugerencias:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Guardar la vista actual</target>
|
<target state="translated">Guardar la vista actual</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Añadir etiqueta</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -1855,7 +1872,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
|
||||||
<context context-type="linenumber">1</context>
|
<context context-type="linenumber">1</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
|
<target state="translated">Buscando documento con NSA <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2807800733729323332" datatype="html">
|
<trans-unit id="2807800733729323332" datatype="html">
|
||||||
<source>Yes</source>
|
<source>Yes</source>
|
||||||
@@ -1927,7 +1944,7 @@
|
|||||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||||
<context context-type="linenumber">95</context>
|
<context context-type="linenumber">95</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Portuguese</target>
|
<target state="translated">Portugués</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9184513005098760425" datatype="html">
|
<trans-unit id="9184513005098760425" datatype="html">
|
||||||
<source>Portuguese (Brazil)</source>
|
<source>Portuguese (Brazil)</source>
|
||||||
@@ -1975,7 +1992,7 @@
|
|||||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||||
<context context-type="linenumber">101</context>
|
<context context-type="linenumber">101</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Polish</target>
|
<target state="translated">Polaco</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="499386805970351976" datatype="html">
|
<trans-unit id="499386805970351976" datatype="html">
|
||||||
<source>Swedish</source>
|
<source>Swedish</source>
|
||||||
@@ -1983,7 +2000,7 @@
|
|||||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||||
<context context-type="linenumber">102</context>
|
<context context-type="linenumber">102</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Swedish</target>
|
<target state="translated">Sueco</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4912706592792948707" datatype="html">
|
<trans-unit id="4912706592792948707" datatype="html">
|
||||||
<source>ISO 8601</source>
|
<source>ISO 8601</source>
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modificado</target>
|
<target state="translated">Modificado</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Puntuación de búsqueda</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Télécharger les originaux</target>
|
<target state="translated">Télécharger les originaux</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Ajouter un élément</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Suggestions : </target>
|
<target state="translated">Suggestions : </target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Enregistrer la vue actuelle</target>
|
<target state="translated">Enregistrer la vue actuelle</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Ajouter une étiquette</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Date de modification</target>
|
<target state="translated">Date de modification</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Pertinence</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Download originals</target>
|
<target state="needs-translation">Download originals</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="needs-translation">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Suggestions:</target>
|
<target state="needs-translation">Suggestions:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Jelenlegi nézet mentése</target>
|
<target state="translated">Jelenlegi nézet mentése</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="needs-translation">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Módosítva</target>
|
<target state="translated">Módosítva</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="needs-translation">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1378,7 +1378,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
|
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
|
||||||
<context context-type="linenumber">87</context>
|
<context context-type="linenumber">87</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Punteggio:</target>
|
<target state="translated">Rilevanza:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
|
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
|
||||||
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
|
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
|
||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Scarica originali</target>
|
<target state="translated">Scarica originali</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Aggiungi elemento</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Suggerimenti:</target>
|
<target state="translated">Suggerimenti:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Salva vista corrente</target>
|
<target state="translated">Salva vista corrente</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Aggiungi tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modificato</target>
|
<target state="translated">Modificato</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Rilevanza ricerca</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Originelen downloaden</target>
|
<target state="translated">Originelen downloaden</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Item toevoegen</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Suggesties:</target>
|
<target state="translated">Suggesties:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Huidige view opslaan</target>
|
<target state="translated">Huidige view opslaan</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Label toevoegen</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Gewijzigd</target>
|
<target state="translated">Gewijzigd</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Zoekscore</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Pobierz oryginały</target>
|
<target state="translated">Pobierz oryginały</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Dodaj element</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Sugestie:</target>
|
<target state="translated">Sugestie:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Zapisz bieżący widok</target>
|
<target state="translated">Zapisz bieżący widok</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Dodaj tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -1983,7 +2000,7 @@
|
|||||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||||
<context context-type="linenumber">102</context>
|
<context context-type="linenumber">102</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Swedish</target>
|
<target state="translated">Szwedzki</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4912706592792948707" datatype="html">
|
<trans-unit id="4912706592792948707" datatype="html">
|
||||||
<source>ISO 8601</source>
|
<source>ISO 8601</source>
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Zmodyfikowano</target>
|
<target state="translated">Zmodyfikowano</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Dopasowanie</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Descarregar originais</target>
|
<target state="translated">Descarregar originais</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="needs-translation">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Sugestões:</target>
|
<target state="translated">Sugestões:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Salvar visualização atual</target>
|
<target state="translated">Salvar visualização atual</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="needs-translation">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modificado</target>
|
<target state="translated">Modificado</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="needs-translation">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Descarregar originais</target>
|
<target state="translated">Descarregar originais</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Adicionar item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Sugestões:</target>
|
<target state="translated">Sugestões:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Guardar a vista atual</target>
|
<target state="translated">Guardar a vista atual</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Adicionar etiqueta</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modificado</target>
|
<target state="translated">Modificado</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Pesquisar pontuação</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Descarcă originalele</target>
|
<target state="translated">Descarcă originalele</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Adaugă element</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Sugestii:</target>
|
<target state="translated">Sugestii:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Salvează vizualizarea curenta</target>
|
<target state="translated">Salvează vizualizarea curenta</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Adaugă etichetă</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Modificat</target>
|
<target state="translated">Modificat</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Scor de căutare</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Скачать оригиналы</target>
|
<target state="translated">Скачать оригиналы</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="needs-translation">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Рекомендации:</target>
|
<target state="translated">Рекомендации:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Сохранить текущее представление</target>
|
<target state="translated">Сохранить текущее представление</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="needs-translation">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Изменено</target>
|
<target state="translated">Изменено</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="needs-translation">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Ladda ner original</target>
|
<target state="translated">Ladda ner original</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="translated">Lägg till objekt</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Förslag:</target>
|
<target state="translated">Förslag:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Spara aktuell vy</target>
|
<target state="translated">Spara aktuell vy</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="translated">Lägg till tagg</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="translated">Ändrad</target>
|
<target state="translated">Ändrad</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="translated">Sök resultat</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target>crwdns3238:0crwdne3238:0</target>
|
<target>crwdns3238:0crwdne3238:0</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target>crwdns3450:0crwdne3450:0</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target>crwdns3240:0crwdne3240:0</target>
|
<target>crwdns3240:0crwdne3240:0</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target>crwdns3242:0crwdne3242:0</target>
|
<target>crwdns3242:0crwdne3242:0</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target>crwdns3452:0crwdne3452:0</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target>crwdns3364:0crwdne3364:0</target>
|
<target>crwdns3364:0crwdne3364:0</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target>crwdns3454:0crwdne3454:0</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
@@ -1607,11 +1607,20 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Download originals</target>
|
<target state="needs-translation">Download originals</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
|
||||||
|
<source>Add item</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Used for both types and correspondents</note>
|
||||||
|
<target state="needs-translation">Add item</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
|
||||||
<source>Suggestions:</source>
|
<source>Suggestions:</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
|
||||||
<context context-type="linenumber">29</context>
|
<context context-type="linenumber">31</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Suggestions:</target>
|
<target state="needs-translation">Suggestions:</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
@@ -1623,6 +1632,14 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Save current view</target>
|
<target state="needs-translation">Save current view</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
|
||||||
|
<source>Add tag</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||||
|
<context context-type="linenumber">11</context>
|
||||||
|
</context-group>
|
||||||
|
<target state="needs-translation">Add tag</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
|
||||||
<source>Show all</source>
|
<source>Show all</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
@@ -2157,6 +2174,15 @@
|
|||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Modified</target>
|
<target state="needs-translation">Modified</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="4460262093225954455" datatype="html">
|
||||||
|
<source>Search score</source>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||||
|
<context context-type="linenumber">28</context>
|
||||||
|
</context-group>
|
||||||
|
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
|
||||||
|
<target state="needs-translation">Search score</target>
|
||||||
|
</trans-unit>
|
||||||
<trans-unit id="4561076822163447092" datatype="html">
|
<trans-unit id="4561076822163447092" datatype="html">
|
||||||
<source>Create new item</source>
|
<source>Create new item</source>
|
||||||
<context-group purpose="location">
|
<context-group purpose="location">
|
||||||
|
|||||||
Executable → Regular
File mode changed.
Executable → Regular
+32
-11
@@ -3,6 +3,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import pickle
|
import pickle
|
||||||
import re
|
import re
|
||||||
|
import shutil
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
@@ -13,6 +14,10 @@ class IncompatibleClassifierVersionError(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ClassifierModelCorruptError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger("paperless.classifier")
|
logger = logging.getLogger("paperless.classifier")
|
||||||
|
|
||||||
|
|
||||||
@@ -34,7 +39,8 @@ def load_classifier():
|
|||||||
try:
|
try:
|
||||||
classifier.load()
|
classifier.load()
|
||||||
|
|
||||||
except (EOFError, IncompatibleClassifierVersionError) as e:
|
except (ClassifierModelCorruptError,
|
||||||
|
IncompatibleClassifierVersionError):
|
||||||
# there's something wrong with the model file.
|
# there's something wrong with the model file.
|
||||||
logger.exception(
|
logger.exception(
|
||||||
f"Unrecoverable error while loading document "
|
f"Unrecoverable error while loading document "
|
||||||
@@ -42,9 +48,14 @@ def load_classifier():
|
|||||||
)
|
)
|
||||||
os.unlink(settings.MODEL_FILE)
|
os.unlink(settings.MODEL_FILE)
|
||||||
classifier = None
|
classifier = None
|
||||||
except OSError as e:
|
except OSError:
|
||||||
logger.error(
|
logger.exception(
|
||||||
f"Error while loading document classification model: {str(e)}"
|
f"IO error while loading document classification model"
|
||||||
|
)
|
||||||
|
classifier = None
|
||||||
|
except Exception:
|
||||||
|
logger.exception(
|
||||||
|
f"Unknown error while loading document classification model"
|
||||||
)
|
)
|
||||||
classifier = None
|
classifier = None
|
||||||
|
|
||||||
@@ -74,16 +85,22 @@ class DocumentClassifier(object):
|
|||||||
raise IncompatibleClassifierVersionError(
|
raise IncompatibleClassifierVersionError(
|
||||||
"Cannor load classifier, incompatible versions.")
|
"Cannor load classifier, incompatible versions.")
|
||||||
else:
|
else:
|
||||||
self.data_hash = pickle.load(f)
|
try:
|
||||||
self.data_vectorizer = pickle.load(f)
|
self.data_hash = pickle.load(f)
|
||||||
self.tags_binarizer = pickle.load(f)
|
self.data_vectorizer = pickle.load(f)
|
||||||
|
self.tags_binarizer = pickle.load(f)
|
||||||
|
|
||||||
self.tags_classifier = pickle.load(f)
|
self.tags_classifier = pickle.load(f)
|
||||||
self.correspondent_classifier = pickle.load(f)
|
self.correspondent_classifier = pickle.load(f)
|
||||||
self.document_type_classifier = pickle.load(f)
|
self.document_type_classifier = pickle.load(f)
|
||||||
|
except Exception:
|
||||||
|
raise ClassifierModelCorruptError()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
with open(settings.MODEL_FILE, "wb") as f:
|
target_file = settings.MODEL_FILE
|
||||||
|
target_file_temp = settings.MODEL_FILE + ".part"
|
||||||
|
|
||||||
|
with open(target_file_temp, "wb") as f:
|
||||||
pickle.dump(self.FORMAT_VERSION, f)
|
pickle.dump(self.FORMAT_VERSION, f)
|
||||||
pickle.dump(self.data_hash, f)
|
pickle.dump(self.data_hash, f)
|
||||||
pickle.dump(self.data_vectorizer, f)
|
pickle.dump(self.data_vectorizer, f)
|
||||||
@@ -94,6 +111,10 @@ class DocumentClassifier(object):
|
|||||||
pickle.dump(self.correspondent_classifier, f)
|
pickle.dump(self.correspondent_classifier, f)
|
||||||
pickle.dump(self.document_type_classifier, f)
|
pickle.dump(self.document_type_classifier, f)
|
||||||
|
|
||||||
|
if os.path.isfile(target_file):
|
||||||
|
os.unlink(target_file)
|
||||||
|
shutil.move(target_file_temp, target_file)
|
||||||
|
|
||||||
def train(self):
|
def train(self):
|
||||||
|
|
||||||
data = list()
|
data = list()
|
||||||
|
|||||||
Executable → Regular
+9
@@ -333,6 +333,15 @@ class Consumer(LoggingMixin):
|
|||||||
self.log("debug", "Deleting file {}".format(self.path))
|
self.log("debug", "Deleting file {}".format(self.path))
|
||||||
os.unlink(self.path)
|
os.unlink(self.path)
|
||||||
|
|
||||||
|
# https://github.com/jonaswinkler/paperless-ng/discussions/1037
|
||||||
|
shadow_file = os.path.join(
|
||||||
|
os.path.dirname(self.path),
|
||||||
|
"._" + os.path.basename(self.path))
|
||||||
|
|
||||||
|
if os.path.isfile(shadow_file):
|
||||||
|
self.log("debug", "Deleting file {}".format(shadow_file))
|
||||||
|
os.unlink(shadow_file)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._fail(
|
self._fail(
|
||||||
str(e),
|
str(e),
|
||||||
|
|||||||
Executable → Regular
File mode changed.
@@ -1,6 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path, PurePath
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
@@ -36,8 +36,15 @@ def _tags_from_path(filepath):
|
|||||||
return tag_ids
|
return tag_ids
|
||||||
|
|
||||||
|
|
||||||
|
def _is_ignored(filepath: str) -> bool:
|
||||||
|
filepath_relative = PurePath(filepath).relative_to(
|
||||||
|
settings.CONSUMPTION_DIR)
|
||||||
|
return any(
|
||||||
|
filepath_relative.match(p) for p in settings.CONSUMER_IGNORE_PATTERNS)
|
||||||
|
|
||||||
|
|
||||||
def _consume(filepath):
|
def _consume(filepath):
|
||||||
if os.path.isdir(filepath):
|
if os.path.isdir(filepath) or _is_ignored(filepath):
|
||||||
return
|
return
|
||||||
|
|
||||||
if not os.path.isfile(filepath):
|
if not os.path.isfile(filepath):
|
||||||
@@ -71,6 +78,9 @@ def _consume(filepath):
|
|||||||
|
|
||||||
|
|
||||||
def _consume_wait_unmodified(file):
|
def _consume_wait_unmodified(file):
|
||||||
|
if _is_ignored(file):
|
||||||
|
return
|
||||||
|
|
||||||
logger.debug(f"Waiting for file {file} to remain unmodified")
|
logger.debug(f"Waiting for file {file} to remain unmodified")
|
||||||
mtime = -1
|
mtime = -1
|
||||||
current_try = 0
|
current_try = 0
|
||||||
|
|||||||
Executable → Regular
File mode changed.
Loaded 100 of 135 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user